{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Convolutional Networks\n",
    "So far we have worked with deep fully-connected networks, using them to explore different optimization strategies and network architectures. Fully-connected networks are a good testbed for experimentation because they are very computationally efficient, but in practice all state-of-the-art results use convolutional networks instead.\n",
    "\n",
    "First you will implement several layer types that are used in convolutional networks. You will then use these layers to train a convolutional network on the CIFAR-10 dataset."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Collecting future\n",
      "Installing collected packages: future\n",
      "Successfully installed future-0.17.1\n"
     ]
    }
   ],
   "source": [
    "!pip install future"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "# As usual, a bit of setup\n",
    "from __future__ import print_function\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from cs231n.classifiers.cnn import *\n",
    "from cs231n.data_utils import get_CIFAR10_data\n",
    "from cs231n.gradient_check import eval_numerical_gradient_array, eval_numerical_gradient\n",
    "from cs231n.layers import *\n",
    "from cs231n.fast_layers import *\n",
    "from cs231n.solver import Solver\n",
    "\n",
    "%matplotlib inline\n",
    "plt.rcParams['figure.figsize'] = (10.0, 8.0) # set default size of plots\n",
    "plt.rcParams['image.interpolation'] = 'nearest'\n",
    "plt.rcParams['image.cmap'] = 'gray'\n",
    "\n",
    "# for auto-reloading external modules\n",
    "# see http://stackoverflow.com/questions/1907993/autoreload-of-modules-in-ipython\n",
    "%load_ext autoreload\n",
    "%autoreload 2\n",
    "\n",
    "def rel_error(x, y):\n",
    "  \"\"\" returns relative error \"\"\"\n",
    "  return np.max(np.abs(x - y) / (np.maximum(1e-8, np.abs(x) + np.abs(y))))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "X_train:  (49000, 3, 32, 32)\n",
      "y_train:  (49000,)\n",
      "X_val:  (1000, 3, 32, 32)\n",
      "y_val:  (1000,)\n",
      "X_test:  (1000, 3, 32, 32)\n",
      "y_test:  (1000,)\n"
     ]
    }
   ],
   "source": [
    "# Load the (preprocessed) CIFAR10 data.\n",
    "\n",
    "data = get_CIFAR10_data()\n",
    "for k, v in data.items():\n",
    "  print('%s: ' % k, v.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Convolution: Naive forward pass\n",
    "The core of a convolutional network is the convolution operation. In the file `cs231n/layers.py`, implement the forward pass for the convolution layer in the function `conv_forward_naive`. \n",
    "\n",
    "You don't have to worry too much about efficiency at this point; just write the code in whatever way you find most clear.\n",
    "\n",
    "You can test your implementation by running the following:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Testing conv_forward_naive\n",
      "difference:  2.2121476417505994e-08\n"
     ]
    }
   ],
   "source": [
    "x_shape = (2, 3, 4, 4)\n",
    "w_shape = (3, 3, 4, 4)\n",
    "x = np.linspace(-0.1, 0.5, num=np.prod(x_shape)).reshape(x_shape)\n",
    "w = np.linspace(-0.2, 0.3, num=np.prod(w_shape)).reshape(w_shape)\n",
    "b = np.linspace(-0.1, 0.2, num=3)\n",
    "\n",
    "conv_param = {'stride': 2, 'pad': 1}\n",
    "out, _ = conv_forward_naive(x, w, b, conv_param)\n",
    "correct_out = np.array([[[[-0.08759809, -0.10987781],\n",
    "                           [-0.18387192, -0.2109216 ]],\n",
    "                          [[ 0.21027089,  0.21661097],\n",
    "                           [ 0.22847626,  0.23004637]],\n",
    "                          [[ 0.50813986,  0.54309974],\n",
    "                           [ 0.64082444,  0.67101435]]],\n",
    "                         [[[-0.98053589, -1.03143541],\n",
    "                           [-1.19128892, -1.24695841]],\n",
    "                          [[ 0.69108355,  0.66880383],\n",
    "                           [ 0.59480972,  0.56776003]],\n",
    "                          [[ 2.36270298,  2.36904306],\n",
    "                           [ 2.38090835,  2.38247847]]]])\n",
    "\n",
    "# Compare your output to ours; difference should be around 2e-8\n",
    "print('Testing conv_forward_naive')\n",
    "print('difference: ', rel_error(out, correct_out))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Aside: Image processing via convolutions  (相当于 imfilter)\n",
    "\n",
    "As fun way to both check your implementation and gain a better understanding of the type of operation that convolutional layers can perform, we will set up an input containing two images and manually set up filters that perform common image processing operations (grayscale conversion and edge detection). The convolution forward pass will apply these operations to each of the input images. We can then visualize the results as a sanity check."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/opt/conda/lib/python3.6/site-packages/ipykernel_launcher.py:3: DeprecationWarning: `imread` is deprecated!\n",
      "`imread` is deprecated in SciPy 1.0.0, and will be removed in 1.2.0.\n",
      "Use ``imageio.imread`` instead.\n",
      "  This is separate from the ipykernel package so we can avoid doing imports until\n",
      "/opt/conda/lib/python3.6/site-packages/ipykernel_launcher.py:10: DeprecationWarning: `imresize` is deprecated!\n",
      "`imresize` is deprecated in SciPy 1.0.0, and will be removed in 1.2.0.\n",
      "Use ``skimage.transform.resize`` instead.\n",
      "  # Remove the CWD from sys.path while we load stuff.\n",
      "/opt/conda/lib/python3.6/site-packages/ipykernel_launcher.py:11: DeprecationWarning: `imresize` is deprecated!\n",
      "`imresize` is deprecated in SciPy 1.0.0, and will be removed in 1.2.0.\n",
      "Use ``skimage.transform.resize`` instead.\n",
      "  # This is added back by InteractiveShellApp.init_path()\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAEICAYAAABWJCMKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvqOYd8AAAIABJREFUeJzsvXmcHdl13/c9t6re1u/1DjTQwAzQAGbhEBpwSIrLiDIlixRFixIZx1oSiVoSxqGYKPbHlmN9pCiRHVlRElmyrc2UEn1EmQ4tRgwlSonDWKRIihJFakjOcDiafbANBkAD6P2tVXVv/rh1691XqNcDDhqcJqfP5/OA16+qbt31LL9z7rlijGGP9miP9miPXnqkXuwK7NEe7dEe7dGLQ3sCYI/2aI/26CVKewJgj/Zoj/boJUp7AmCP9miP9uglSnsCYI/2aI/26CVKewJgj/Zoj/boJUpflwJARH5KRP63nb73BsoyInJizLV/LyI/vBPv2aOvXRKR3xGRn3ux6/FSIRE5mq3L8MWuy26kXS8ARORHRORhEemIyCUR+Q0Rmd7uGWPMzxtj3nUj5X8l994MGWPeaox5361+z0uBROT7ReSzItIWkeXs+3tERF7suu3RV4dE5IyIdEVky/v86otdr6812tUCQET+IfA/A/8ImAJeBxwB/oOIVMY8syfpv44pmxP/EvhfgQPAAvBu4JuA6+aEiARf1Qru0VeTvssY0/Q+//WLXaGvNdq1AkBEJoF/Avy4Meb/NcbExpgzwPcCR4EfzO77WRH5fRF5v4hsAD+S/fZ+r6wfEpGzInJNRH4m0x7e5D3//uy7Mxd/WETOichVEflpr5zXiMhnRGRNRC6KyK+OE0Ql7fmEiLwr+/4jIvLnIvLLWVnPiMj92e/nM632h71nv1NEvigiG9n1ny2UvV37lIj8pIg8nV3/oIjMfsUDsgtIRKaAfwq8xxjz+8aYTWPpi8aYHzDG9DOI5TdE5P8RkTbwrdv1n4j83yLy44X3fElE/iOx9MvZeGxklujJ7J66iPzzrN/XReTTIlLPrv2fmbW6LiKfEpGXb9Omt4nIg9k8+AsRufdW9N1LhUQkEJFfzNbuM8B3Fq4vZWOyKSJ/IiK/VuAVr8vGYU1EHhKRb/Gu/Ui2VjdF5LSI/MBXr2W3iIwxu/IDfAeQAGHJtfcBH8i+/ywQA+/ACrR69tv7s+v3AFvAG7Aa4i9m97/Je97dexQwwG9l5ZwC+sDLsuuvwlohYXbvo8Df9+plgBNj2vMJ4F3Z9x/J2vajQAD8HHAO+DWgCnw7sAk0s/u/BfiGrH33ApeBd9xg+/4e8JfA4azs97q++1r7bDcnvHt+B1jHWgQKqD1P/30v8Fnv+VPAtawv3wJ8HpgGBHgZcDC779eyMT2UjeH9QDW79p8Bray//wXwYKF+P5d9vw9YBl6blfHDwBlXzt5n27lwxs3xwu/vBh4DbgNmgT/N1mWYXf9MtkYq2ZrZYLj+D2Vj/7eyufLm7O99wER2713ZvQeBl7/Y/XDT/fhiV2CbAf5B4NKYa78A/Ifs+88Cnypc/1lvUP97n+EBDWDA9gLgsHf/54DvH1OPvw982Pv7KxEAT3rXviF7dsH77RrwijFl/Qvgl2+wfY8C3+ZdP4gVEGOZ6G79lM0J4C+ANaAL/I2Mwf7u85Tj918NWAXuyP7+ReDXs+9/E3gCK/SV97zK3nfqBuo8nY3tVPb37zAUAL8B/I+F+x8H3vhi9/Vu/2AFwFY29u7zXwAfB97t3fftWf+HwO1YBaLhXX+/t/7/MfBvCu/5KFYwT2Tv+I+B+ovd/p367FoICLgKzI/B9A9m1x2d36acRf+6MaaDZa7b0SXvewdoAojInSLyx5l5vwH8PDD/PGWNo8ve925Wt+Jv7r2vFZE/FZErIrKO1XLce5+vfUeAD2cm7RpWIKRY7Pxrja5RmBPGmPuNMdPZNTefR+bDdv1njOkBvwf8oIgo4D8B/k127ePAr2K1/WUR+U2x0OQ8VnA8XaxgBkH8Qga5bWAZFZTPkyPAP3Rjk43Pbdgx3aPnp3cYY6a9z29RWA/AWe/7IrCSrRFH/r1HgO8pjMcbsFZfG/g+7Ny5mEGHd9+SVn0VaTcLgM9g4Ze/7f8oIk3grcDHvJ+3S2l6EQt/uOfrwNwLrNNvYM3LO4wxk8BPYaGBW03/B/AR4DZjzBTwr733Pl/7zgNvLSyUmjHmwleh3jtNbk68/XnuK86H7foPLKT4A8C3AR1jzGfygoz5V8aYV2GhtjuxAQlXgR5wvOTd/2lWvzdhAxeOZr+XzZPzwD8rjE3DGPOB52nfHo2ni1gh6uj2wrVZEWl4v/n3nsdaAP54TBhjfgHAGPNRY8ybsQroY1io+Guadq0AMMasY53AvyIi3yEikYgcBT4IPEumpd0A/T7wXZmTtYKFfF4o025hccCtTPr/2Ass54W8d8UY0xOR12CZjKPna9+/Bv6ZiBwBEJF9IvJ8DHRXkjFmDTsnfl1E/o6ItDIn9yuwJvo42q7/yBi+Bv453rwSkW/MrIcIaGOZvjbGaOC3gV8SkcVM63+9iFSzd/WxFkkDayWOo98C3p29Q0RkInNYt76ijtkjnz4I/DciclhEZoCfdBeMMWeBB4CfFZGKiLwe+C7v2fdj19JbsjGtici3ZGUtiMjbRWQCO75b2DnzNU27VgAAGGP+F6yW/YtYxvtZrJT+NmNM/wbLeAT4ceDfYTWALazj7YaeL9BPYJnHJnbx/t4LKOOF0HuAfyoim1jM/4Puwg20719itd//L3v+L7FOx69JyubEPwD+WyyMdhnr2P7HWH9AGY3tP49+F+uLeb/32yR2nFexUMI1bPgp2LnwMPBXwAo2XFll5ZwFLgB/je3vcW15AItb/2r2jqew/qE9ujH6IxndB/Bh7Hh9FHgI+ALwfxWe+QHg9dix/DnsGu4DGGPOY623nwKuYHnNP8KOq8LOu+ew4/1GvnoK4C0jyRwdLxnKIKQ1LIxz+sWuz07T13v7bhWJyA8Bf9cY84YXuy579NUjEfk94DFjzP/wYtflxaBdbQHsFInId4lIIzPffhGruZ15cWu1c/T13r5bTRkm/B7gN1/suuzRraUM1jueQYffgdX4/+DFrteLRS8JAYAd5Oeyzx3YsM6vJ9Pn6719t4xE5C1Yc/8y1lm8R1/fdAAbkr0F/Cvgx4wxX3xRa/Qi0ksOAtqjPdqjPdojSy8VC2CP9miP9miPCrQnAPZoj/Zoj16itCsyZ77iVfNGBYKYGqIiwqgOKkIkQEQQEXSckKYpnU4HE4YEKiIMIyr1GkpC0lQwJkWyjMBRFKGUQmudbelWGGNsWYL9X2tEDP1+n3a7TdzrgmjqtSmiSo2wVgUgRBADpJq+tvWI45hebxU92MJEMRUVEQY1wqBKJagRRBFEASpVQAqiUd6mZge9aa0xWX3Ey2Zs6w1gQDTGpKBluEVdybANJsnLU0YRBAFaa5QayvcUk/dFkgzQWmG0gGiSJKHb6bN67Rrtjf6ObWy77777TBDYMVRKEYbhSJ1cOweDAYPBIO+DMAypVquISN4uN3ZubN21JEnysty7XB8NBgO63S7dbhetNbVajWq1Sq1WGyk7TdO8rH6/TxzHxHGM1powDKlUKoRhSBRFhGGYPyuF7NN+27S+PkTcGEOapvl9IkKapiPX/e/FMtx8LutDre04umdcv6ZpSpqmXLhwYcfG9T3veU8+rm5sfXLz0rXD3VfsL7+9464V54B/3S/bT2/gP+NTsd/9vh93ryPXHr+MYpuL9S/WwdXLH0P/Of+7MWakDvn6Vmrk91/6pV+6qXHdFQJgfq6BChLsTvwUFcakaAIJ805JEzvBaw0DSiMkKAVGDEqFGC0YrYYTUg0ZSpqmiAlzZiFB1oEKQEMwgKqml2pAEzKgIiGhBKCE2ChUapAAAjQYTSopFQVaDCmgFAiKQNWIwhoSBKQGJIoQMRhSjBkOuhs10RqlRye2/SKIZAxABBBMWAFj7LNpave7GhBqDDe/JhgjKBWOTPBEDGmqLbNLwWiTL4IkiUnSHnEc7+CowvT0dD4e7v/ipDbGEMdxXld3r/vuM8EgCPLf3fNBEOTPOsHnng+CgCiKcgbvmFaR3HtEhCAISJIkf4cTWkopfGE2buH6v/lC3r+vyKDcu4bKymi9HPnM3WeQjvG7dg7HNXleRvdCqMgMxzFdXzi7PguCIO9P146iQC1+9//33zNU4qzSUKQiE3b3uvoX55P/nD+P3NwpY97+GPvCyJXr18EfB1eOL0CLfVjW9uIcuVnaFQJgYmKCaj2bDCYYDogEww5OAyDAmAqJMWAUIgGp0RgzAEBJZO/VGpcG3g1cPIjzbPFaBRgCtCgirakEUA2FihIwNcIgJA1iwkChVEhgDDpjxqGkJCQYFRNGmgEQKYOSTAgoTRr0EQIUIWIMGFAiBHlmemO1e6MQArQMhp1hhkwCA8Zg22IUWg0nRECINgYJQkSn+e+xTpFB7LoPa/kIiTaAoBNIjbEC0wQYYy0NrUHrnZtYAM1mkyiK8roVmaev5frf/YnuP+czBndPkcn4DDOKolx7dwsuCIKcqfsLrMgknWAJw5AgCHJmAaOLt7iAXTlFDb7IFMoYuyvDb6drk2tn0fJw2r9rg68J+8JgpylN05HxKhvbIvnt9hms++4zOkf+ePvlurK01vlYFbVqv/yyZ/x55b+vaNX4Y1Km1fvtK97nWz5Fgemu++0vll8mwMre/UJpVwiAarVKpWIHUDGEMCS0TCtNU4ThArSdIhgNRgW5BmRML2f4Im4A7KKoVIeda7SgRdCiCDFESUI1TalVFTrFat4hCH1EErR4Wo9WpKmmXlOksSKOK4gKrdYdgFIaoxSBEqu4o3MowejEa7UiSRIEQbALNE1T0sTk7YehtqKUwhkEeAtca4MYyZi4QaegjLN6QEmA1pbpu/cKgmF4f5oadCqUoBY7MK6VYf29xVWczL525i9Yf1HZ8RxdjO7+3FIsMLskSajVaiNWQLEc937HaJ327MjX/stgH5+BK6Wu0/R88hmgq4dfpv9e/xmfoQPeHBnVdP0+Ga6LnRXsTqCWURl05drg/w9DOGOcVu+Tzzz9ex0kV7TKilZd0XpK0zTnFeNgHZ+KQsVv77hrRRoHEZZZQzdS3k4I9l0hAOwCy5gEGhUYglDlUE21WgUznACYGKVChIA4TZBaZDtUEk9TGO0818Faa0QLmkwTNoZKZLVkaUASCxghlT4QosSgZQiNGB0MByupkKZBXr6KQlCQ6gEiKZgQxEn3PpJ1t21DSJoaknhYr1ywmYwJaYWULAbXPmN0BgdlKJFJkWCAiCFQBm0EI6kVUOkQH06NtkJBa9I0Jkn7WZ13bEgB8sXnvvswgPttHA48jpEUqajxFgVItVrFmKGvoAhfFLV0X5N214vaYBmTKlozSZJc95tfttNYi230oQZHSZLk1oVvCfkWh08ODvL7YifJF+Y+0/LrXda/ZZCWz/hu5L3+s/5vaZqWCmhHZXCQT8WxdL8VLY8yK8BvQ9n97m9/LvjkW25+vxat5qLCtBO0KwSAiazWLCpFqKANBCpA4zpL5enNRClEalaDNQaCEGMMkQkwatgc8RzCtjOHUt7CHddrJGKGuLnRtWwAwHjQkkLQOsPkjfsO2th3K6UYmH42iBqtE0/LSQDr0DXaaqW6qkcmhxBYjVyDMenoAjFDbTU1IAZMqjEZtpVm2vwQNlMZph1TNZWh9qO7pKkQD1L6JsHoFBUK0Q7PBrc4iwzUX7zFaz6NW9DjYIYiE/KpqAGWWR9FZloG4zgmVob5FuGfcVh9mWXjKwGujxzDdzCOK9P1mxMyPgNJkoTBYJDPuTiOdwQqKPaL+98fA1cvv81FfL3MsenuLXtH8XuRikz1+ZSKYl2dtecLM98qKcI34+rt90lZO8rqVQb5+Nd94VYsc6fGdFcIAEyY4eQB1hFcuLxNg4MgwFiMY9tXjMMHi2aj0pljyAzNQ81wgYv3mpHFT5L/VjM1i+2ngiiPiRiVWQRuUFWOvbtblHKQjGMKbgJZfwBYvH6grTNYNOjs3ZZJSH6foNA6JU01Lnee1po0CYhjwyCEIFZEUUCSGLrtW5fZejvtzF33qagNjbuvuFDhei3aFzRlwsEtRN8ycb/7f/swVRG7LeLNbtE65uIEjC8AinXwcfUirFWmwfpWrXs+SRKiKKLf7+fQ1U5TkZEWmV+R6Y5j7ttp6+NwdPebc/reCLxVprG7fin2jz8Gxd9hvGXjU5mC4vuN3D1uzBy5uoyDgooW107QrhAASjnGbzsjH3DhOrjA72ylFIm2MIiIYPAmjJcR+XrTqVzrTI3B4SBGD012FXphlXrImPxFqrCWiCAEKpssAGKIwsyZbQJAoU1CIEPn6IgmSJo5aEF7zl37GfZDpAXRBoVkjnCD1jZpYVF7cniw1UIt3p+mhl4AURLQ7yfEMTQmdnY6FLUnX6vxfytj6mWLsGwh+H8Xyc2dcVhpmS+iuPB8xluMUHLl+1qoH1lijBlxgvvM2v3mkzHmukisMhjJ9U9RCDjm1e/3CcOQMAyJ43jHmEWxj7bTaotjNO63srL9cR0nTIqQy3Z19J+HUaHl3w/k4+WTPwecVebPhRvF4svmtA+L3UhYql/GTgj3XSEA8s4PQmIxeUBjJAYl2YRHSgc1yO42ihxjFxHEKEQZbMpu22m5qaeGAxeIFxroa3ahFSJaa2I0EtjvSjIcFjC+9WCGMJWDaixGbx3LIIgTDJLF4DN0Gg4Zkcpk0GjoWRAEKNwEEFRu+WgExxQEI/a60bYPrBCDQCr2XUFIahKS2Fob0cD6W/qDkGp3Z8NAfXPakXOIl4XejVvMxTC54sJ3TLAYZeHuKWpW7vsI/FcQAuMoh9fGaIC+c7fogPUFoH+fX7ZzmpcJiiID8SODfOHiO623c9jeDJX1UdFqKzJyf4x8YbEdFLKd8NrOktjOSe2/f7vnygSVH27qynCO6OerU7Eefr9sJxiLSsiNCIwbpd0hAFQIgmWqZmieoQxGZOR4Jyu9naWgcJiM077t74KIQiB/1k6+MBMmmRYqgvImQpl2at9nhYGIIgg9DdFnYiOx/IyUk9evoL3A0NQvC0fzB/66CS1OsOmReqeZ70OUwmiNUmJ9JZlFo5SFnFQgBFohVbsxTmNKtZ+boeIiKHNmFdvr31vW7iKDcf87YemefT7YqPiOslDOsmcdExunxRfHtXhPmWlffL4sCsZnnj605erqvysIglyQ+Pskdorcpr3tqGycyyKmfCEB4/vK/83/3z0z7nn/nrI6umvbrT2fitb1uPKL89Nvi2/FFd/p91vxb3f/To7prhAAMI1gHZsKIM06DJ05fQVMpp0aG2oJWIZvnNNW49wHMgx0REmINgmCsg8bIO9sCzuVdbj/XaWZNWA0Gl9z87TGwJsM2otYcr9dNzFHtSMfT/afGXGq+UxHUlRgO0Sj8jKUqFwAuY1kShkkssLVGLtnQSRzTMYQhIYKIY2Gf1LezZPb9ONTmabt2uebtGULufhssa/GafHjNNNxZRfr7MhnzNtBDzdS17IIIN9iKVoSRYbhrvkwlOtvV47TTG+FH2CcBVOkMgbml+H313b4erG/x0GERUY7jrZTEMrgreJ925VdJoy2ExbFPiq+p/isU1h2wrLbFQJAqRAJQlIE0cNwrkgFSK59GxtRE4DBmb72eRcCNkwFIWg1NI8hsy6cPWDApWfQRMMO16lnbVinqbUYAoxSpKJzyAlAi48DDtMQELgwQkFpu5koTc0I7KONp8XpGBVYRq8YLmhnvucYsHuxCAqDKBvOKmmEtQSwgjRNUYHBaAd9DJ9WSkFqbNSVAVOFCEOghE64s5qiY0b+ZHXMrwgPFMlp4tsx3O206RvVUMsssyKk4+4rLrri+PjX3TO+ZeLKGwfLjAuZLIZ+DudcmgsGJzQcg3DWXHFfwk7QOOYzjkGWMfQyhuj8Ff4Y+BZOGVP2r91IvYt18udiUeMep6xsZwH6v42zAvx3lkWFlQlXvx7jHNgvhHaFAAjUFIEL4VRePK/JYB7jYAvAGJR3FKc2fQLHv00KGVQjWdinkxI67Yy805gUMv8C+eB6eVl0ONTOMWAcNBDlm0gI0mGUTvavhVy8xSFB9iHbmUv2Pm9yGX/SZdpw5qcwGXO2dRoyE5uAIoN0TDKEhHRA5Ha+Bmpkw4v72L8tRIayEzWJzVjN94WS23Vr2zXcBLZdaKAjP1Kj7L4yx2iZKe//71/37/cZZBls5xZ8EaIqa5OvnZUxkuK+CB/i84VFmXP6+RhPUdhsp6XeDPmCuQy/9utdFBQ+Qy+OnU/FcN0yRupDd8V7i+8oUzxgNEprO5hoOxoHV7rx8udEMV9VUYEpzuWiUPXbuxPjuysEgArrqIxp5Q0WwWB37NrfNIlJUMomZss7DJuwzRhjk6ophRGxsI/YyCBjDIZKrlUCaBNbLC3bnauUQhlvEE01q4PrbEjSBKOzATeKNBmmcAjFYLSxztmkN9QURBMnrr5u8YI2Oo/lDqlg0ux+PVwgWltvxZDpJ4g4f4fdp2C0RkRbQSnabv7K4C2nLbjJMoQSsusIqYlRCsJIdtwHUKlUrtOyXZ2KZnLxPkc+7ukvUregihqlr6H55fmL07+3TGgUBYK77ocClmn77tqNMA2/P1w7iszd3ePeVewfn+H74+ssDF/47iSNS+rn6lqkYt8X+9+1xZ8Tfp+UCXIRGYmwcuRr8GXKgBNevpAeJzTLmK+fcqKsfY6KVtK4VB5lgQtlPiBXn6IScrO0KwRANbRMPFBDjU9ECJSNwE+VARMRqCqSaFCeqZaFvwGIsQnkjDG5RWEwGbPNUhKEkJoUdBVjQLQhrFSIU0Oqeygd29BKHeWDYaSDpkKc1qiqgEEvoVZt0APqFSHpbTEIB1QlJIoDUhUBNpRTTCZgsiRjTgMMlQ35a9Snabc3h87mbEy1MaAyeCHD60UnmQbvzHrr59BAiEZp+90JCW2y3aZpitEJKusblMEYjVGGuqnQDzS9NAHZ2SigsCjUud4vUNRy/U9ZvHZxARSFm08+LOI/6z/j3lupVBgMBtRqNeI4Jooi2u32dXUvwilFGMpPL+A7S7fbh+AzumLkUBkV4ahiu28EprhZKsI6RcE3DnbyGXQRfnHlOiFWfJcPcfnv9mET9+7BYECv12MwGJAkCUmS5KlJGo1GaU6oIhUd7C431Lj7iwJju0ixouVTZtX4Zbp2Fvcj3CztCgFQ1hilbF4gI2AUlnk5rUD0iFY0nCw+FpuVI3YzFr65ZSJUBrUkgaBVjThJqFYbJIM+OtutKyKE1ZAoXOT2Y3cQJ5qDhw9z8MAhHn/8aRYXJrl08TynTz9Db9An6W3Skz7GuHxEQAbv6NTCOjq1da9UKmAG9LoJQdDKwztzN4Wx+Yys78MmbLN1NiSpx9TIMERStDH24yaYIt9QFigvPYFEQyZIgDYaY2K4njfdFPl4pfvbZwDutzKmDtdjnEUN0F/4xYRgro+TJKFSqdg04maYgkEpRb1e5/bbbycMQw4ePEir1eLatWvU63VWV1c5d+4cq6ur9Hq9kVxC4zR0pWzK68FgUGrN+G0cF27otFO4Pg1FGWTivt+KhG/jaBz27DOnosVWBrEUBVTRivD7SGeKXr9vfXOuj2u1Wl6+1ppOp8PKygrLy8u5IAmCgHq9zuXLl6nX69TrdVqtFq1W67pcVX4fl1kNbh6MgwbHwTd+epFxcJnfjmJ5bu26epVZIi+EdoUAGG+ihrgtXca4cElxYfYjmoK/WOz3oflrjMGkGrJ4+ahWIY5jFhYW2Lf/MJ1en6hSoxIF9NsbmFTTqNr00UtLS9x550kmZ6aJqhUq9EhizRvvu5t+kvLYk0/w2le/miceP8vK6jKXLz/HysoqcdJBExMGAakepg2QUAjCkH6SoKlCUEHrGjaHkIV8HHQlRlufR6bRY7QVgtl1rd0eAI3JnOS2n7L+yjaFKRF7jRQEtJ+sTACTYnRq9xXs8LgWIY6iAPDv88mPbvHN5KK27ENHtVoNrTWzs7MsLi6SJAn1ep2pqSmeffZZKpVKLhSOHDnCgQMHOHz4MFEUjTBWYwwXL17kFa94BU8++SRXr17l0qVLuTDwmYWrt4MjfLzXzU0fZ3b1L8v5U8SM3TM+4yj2VRESc/f5fXsrLIAyctrxOOFXNu4wrHtRsPgb+bTWbG5usra2Bth+7na7ACPpxIMgoFarcc8991CpVEY0Z2fVra2tcfHiRU6fPs3ExATz8/NMTk7SaDRygeDeC+T5pPxUHz7j9+dkUYi7+8ustDIqluOPaXE+7MS47goBYCRE6xRRZghTyNBRGmW5gLTWNkFcnujNWM0Vy/BSFeT+AXvWiUEMhCJ0sBvNFMJkfYL9R/aztLTEsaUjRJUa1cYEE7UqGxsb1Ot1alElxxmjaiXrfDCmQVTJtHg94L5vuBtUwMvuOIGhz5Urqzz8+FNcunSZB7/4JQb9VcJAUAZUGJGmMXE8QKkApVy4n8mgkcyPYUC0xgSj5rExyoOINEYnCNY3UbEeckSG8f4EmsBYhi8SoZTbKDTIJ2iS2LoEkqCktqPj6mO3RRy3uCDGYerbLRT3v9P2Jycn2bdvH8ePH+fIkSNUq9X8AJitrS1qtVrOlMMwpF6vX2dJuDKXlpYAOHHiBEmScOnSJZ5++mnOnTvHU089xdbWVn6vDwsUNUOl1IhvpQzH99ujPWXBP5egzPLwnbFFq8J9zwMWdpBcu/z6FttWtFZ8ZumX48rwwz2dBZumKd1ul62tLTY3NwGbOh7s+O3fv59OpzPik6hWq9Tr9XycfZgpTdN8nmhtd8evra2xvr7O1tYWk5OTzM7O5gcOObjSt0jLlBi/3cX2+31Q5ofyn/efde8tS3lRpjC9UNoVAgCyhSB6JIWDT/6kG6Whya/z2HoA23k6sVK7Ua1RjSocP7rEHUcWueuuuywm2JigUq1jMm3ZTTBlPK3VaNz+AUit1g2YoEKkrGk6UQnQJuDQvjkmG002N9vsb07ywJfu6H3KAAAgAElEQVS/yMrKCiJCPOgTRiE+1uLgiHyiZAJAiSLJo5Ic3DM6CVQQZAIOAnFOLW9hie3NKAxJdZwLByEaQiVRFaOFNOgTRf2vcNS2J39R+OGIX8nkLcND/Vz9URQxMTHBsWPHOHr0KLfffrs9X6JaHTk5rNlsXmfeFxeov7Cc/6JarRKGIbfddhsLCwvcfffdLCws8NBDD7GyspKHgY6zYMq0vzJB57777XVx/EXN3t1bxKPL4KKdiBUvkl/vIoZexgzLLJbtmGaapvR6PTY3N2m32/m6nJ6ezs93cM/NzMzk331hOO69URSN+IaazWZuFaytrdHr9Zibm6Ner4+0d5wGX5xLxX7y6+T3VVl5xfXh/i+Ov69c3CztCgFgOybTfBiaOsqM3lP8rrUGY7UrEbFQS4aja9MHFVgmH4bcfvgQdx47ztLSEgfmZ4fSPLD7B4zRBMqTxlkaCRFQxuZbTrPMikoEMUKgAvqbq1RDIU5BVEJVVanONJmfaXH4wD6++f5X8tCXH+PBRx7n0uULbG6ug9g0DD7lgzuy79lNILdovAmSTQAxEAUKSbMwQk8AYJTd9GUg8J2CXscqozBKqFRGt7nvBI1jij754+qb/OM0LKctOofegQMHuOOOOzh+/Dhzc3NEUTQCJ/jwU9FUd5SfFOeZ7oPBIK8LkB9T2Wg02L9/P/feey+PPPIIjz32GMvLy3Q6nW1hj6IG57erLHzQ/V8MDy32R1GAFDXOsoidnaQyC20ck/OvlzFApRS9Xo+NjQ36/T5JkjA1NWUt8lotd9y6e30IcDtB6n53BwQBI5h6GNpNkO12mytXrvDMM88wNTXFgQMHqFarI4ELxblTbGtRMJT1U7HPXD3K9owAeZ19RaVM4LwQ2jUCINfkszYJgiivA71smzoxmZM4wChPQmY7h3USMz09jYpjDkxOcu/L7+HOl91DrdGi1qiTiEJLSsUIvUFMLTSITtDBMJokUhEmsMxRa0U66BKKBhEkqMAgxfSvIoMeKdaZHBiDNCoZjg+VWsh8OMHrX3k3d9w2x2e/9CgPP32J1ZUNEr2FTvsoYpSXw4gs6kdjGE2CASLD8MNA7GYybezuX1+A5Jpy1meIBdOMcw4zzF0iyhAPhidf7SSVMYDt3uHjp+OcpI1GgzAMmZ2d5d577+Xw4cNMT0/n8I57Po7jEUzad+T5zMHh82DnoYsYcc5Gnxm7k8EajUb+3qNHj/LAAw/w7LPPsrGxQZqmIxuaytpQ/M3XIp1AGBcNUsY8i/6VorDcafLr+HzjWfzbF7K5oqcUnU6H1dXVPGoniiLm5ubyUGL3HncNRs+GzsO7vUihosbt5oWDxfxU0E6haDabDAYD1tbWOH/+PEFglciJiQlardZ1Z1W7djmh4/uryhh0EeqB8hQ0/rN+28oswpuhXSEAyqhozroD1UUEFfnx+t6CIoA0JcRQ7/R485vfzOz8LBPNOvVGlSCyC7zaqFsmPUipBgE6jVEYiHWWcC0lDewZAkoptIkIBOJeDxVFqMEA0TaMU8cxiEFUQDJICCoJBH2001KMZmJigigM+eZmk6XjWyyvbPDE6Sc5d/YZeu2NvP7FzUNFHPx608/5SYZMQY1MkOA6ZmCMyTy/w3f6qQduNZVpSv7/42KgjTE5873//vvZv38/k5OT1Ov1nEk4AeCnYoahE9EtPj9lgjHGy5Rq8/XHcZw/684IjqJoRFiICJOTk4RhSLPZ5NKlS1y7do0zZ85w9uxZer3e2PaXMYBxJn0xfPBGF73T/m9VdJDPlN3fReG0HSTi4/9bW1s5/BKGIfPz89Tr9XyM3Px0f7s+8Z2yxXXjf5wV5CKJ3BxxUVtFhQNgdnY2FwaQHUoFeSh3GQw2DgZydSxaKX4/+XBdWZir++6XuRO0KwSAP3nU2MZ5YVloUJmp5+XUCRFqlYB7jp/g/m84xfS+OSqNCQgjAkkJKxEoIcAQD/pUAEkGoFPifg/JHL+BCEFq9wsEUYQmQUUByWafRhCSDLpgEvRggNEJQaAgGaAHXZRuQRLYdhixTuvM/GxFmgNTikE/otWcY7K5zqDbI00ssyhOLCjfHAVgTzxzFsHw0A+Df6TksDyHwYsMHckA2tiNYePeczNUpsGWkd/m3Hrxwjq11rRaLU6cOMHJkyfZv38/tVotX8C+k9XlwXdM38X0+4LOCROnsTnG4wsAnyn4B6+4djnmF0URzWaThYUFBoMBU1NTTE5Olh507zO9cX3iM5Wig3XcPgT//7Lnd3pcx0EP/nt8ZlZ0ZLr/kyTJNf9KpcLBgweJoqj0zOayfQF+fzrBUGZhuXvdnCim8fatTvcuF02ktabX69Hv93MnsvMPlFl1ZX1VZgkV+83X7ItQUFlbdmpMd4UAGBlsPW4ArbarlKIxUSeOY6tl6eEW74mJJof2z/JNr301rekWUaVKGEWkA00iA1AhQVRBpwnohG63T6AMpAmCxsQDDFlIX4adEwSoMIJ+lygQ4n4XSQdA3zJ2JXQ7W9QmKsSDPtW4x2AQ57idqU2glB3cRlWhTIgO5unoOsmgDzqh3b5Gr9crxbrHaubGRv3Y/hseVOMsABHJw0AdkhQol4NmVBtRyuZa2mkqYpbbkW8+a63zU62UUkxPT3Ps2DHuvfdepqenc1wWyPPn+9qhC9V02p5/DwxhH9/yGQwGI8zVLVxnDfT7/RHm4NoH5NDB4uJirnUHQcDq6mr+Ln88x0Fc7r1Fjc+/x3culzkH/fudwNhpK8Cvb9FCceSfoezgIneP72fZ2NhgYmLCWskZ8/fvc584jkdCZ42xqbOLVpGvjSdJkgt2n9zfTnmI43ikTGchuDXpQoc7nQ79fj8PDvCtThiNfPKpaNkV61yEglwfl1kKZb/fDO0KATDiDDOjWosW+wmN3VildUJ/yzptq4Gikya0qjUOzs9w9OAMd564g4l6k4gKJJDq7CSsWJMkHaK6IR707KHtad8yAWUQCTDJAKMEo2qk8cDCSzY/BEGSEkhImvQYDPoEGMKKQpmIMOySJhAmA9KNqzAxCakijhU63kACZQ9+D0IajToHwpjKbQ3mJl7GE3PzPPTAZ+l2NcgAiUJMPAz/85mHZdzZIhOb6tli+sMUdaJNnuLaYPMBaT3sXxVYjR83AQ3YNNmaKKqw0+Qmq695FRlW0WQHuzhdyN7hw4c5efIkzWYzZxBuY42/cNvt9nUhmf788u/3D15Ryu7a9XFtn3HFcUy32yWKolyw+CduucgShyXX63Wq1SrtdntEkBWZe5lwL/oDHPl942PpPuTlyvWZg7OSbhWVvbuo6QMjfRrHMVtbWwwGA6anp2k0GiPROY6q1Sr9vj1e1e3QhmEfOXimaOX4lpKDbIqpGJywcUKleIYzkO8O11rnc89ZNM4fVIR2xkGcjsrgqnGWYBmTH6c4vFDaFQIgNTpL4Ozt8DSGXMeV0cnktNgksSZZQMJMI2RhappGJbLHMMa9LC2C7eRarUa320bHPSIl9PttJicmSJIhLihpSlCJSLp9ez5xqtEDQyQJoEgGMSpbcNVqhTgxBMZuOkvTAYo+/Y11aiohjTVEU4AiTU3mtE1gkFKJKkxHQruaMj/VYOnocf760S8RJ1bzDRieU+A0OV/6QzH6g5wRiAhkvwUyTEvgT7SR/EBiz2DW6vrUzTc9roXdin5iOkdl0Ij7XWvN3Nwci4uLOeQTx3F+zq1jwN1uN4dtOp1OvnGnqJG6ewaDwQhT9KGmIszi4sW3trZotVojjNdpci5ev1qtorWmXq+zb98+Dhw4wLlz565jVO65YvI3uD6qxx/XItxTZim4ssqY0k5RWTjjOCboW7T+325Tngvr9FNXO4bcbrep1Wp52U5b99/rl+v7Cdw4OmHvWxRFzN1ZEr1eLxcUPrzooKN6vU6v18sVA9fW7UJhi/1UHIsy+LOsX28V7Q4B4Idzpd7EDtTw8Pd0mMnSks3x01CGk3cc5Z4jBziw7xBhJSLFoAe9PCIjiiK2tjbyQdSkBMDlS8/RmJyyg6w1tTBLkaA1USToxFokOokZxJpK1CDVfarVKkoJgZAdU6BQ2aa0WmDQaysE802SakS10iIIQfd7RLoDIiRpChLRrEccnItYXZmjXp8g3hx1HPrMwlHRMvApCAJ0nvxu9H5fo/BxcAu5yXURRztBDnf1TWNfewVGcFl/N2e1WuXEiRMcP36chYWFHFJzi9nfJAVDJ52IsLGxke8DcBpbUQCChSDiOM6xXqfVFbVzJyDW1taYm5vLI0Ycc3YMwb1rYmKCubk5pqenWV5ezn0LPsMuLuxi0IP/vahpOioKAB9D9v0Pt8IR7DsnxwlwN96+P6Lf79PtdgmCIN+v4awCV44bg0ajkUdlOUd8zicK1qJ/3jKQa/hF67IIRzlLztXBQX3OsvNhKWNsFJrzB/h971MZRDOOkZcpdf61olXl7i9afi+UdoUAQPe9HDbDbJEJQZ4KgtD+r0kxJiUwEVEIJw5Os7S/yURdYUyXNInRidWAU6OJ6k16/QEkhmqkMP0+CZogEGqNKkGSMCDA6JgwjIhSqJIQx4q037P5+RNDf2OFaGqOIAhJtUGCkEBBom2m0TQZkCYBmpRKrWXzjzSnSGuTAEgtIR10CLpt1GCdUCdEugfdLqazTq/Xts7qLHOoAdApokIr0MQQ5IFPFgoKEFIBYxTgDoSx7ByRbLdwpql4i9TXtILsoJsoMCA7mw3UCQCfsftQAFy/QcZBP0ePHuXgwYPU6/UccvEXvzPPnSAYDAY5LussBVcH9w7/Xvd3v9/P48v9+4EcZnB1rdfrRFGUh6L6kIa7z7XDCT4nPMo0xOKCL8P0ixqi3wf+PUWHse9v2GnLzk+X4EdG+VFBft2TJMmd4mma5ni/q7ff/y6Jm1J2d3etVssPKur3+7mgcG1zzwWBPQXND5msVqt5DihXF393r/Mr+PNzcnIyvzYYDEZgS/dxwv8rYfTPR2VWwDgYyO/fm6VdIQAiWbO5bUQjEqFTe6CFkaEjyT9ycaI1zd3H7mFxbpa6JNSkS6Q1Sa+NRjAqIkls2oi43acx0URVqqyvXsLEfaLBCqEZMDN/iCSqEkweQEsFSTSaPvGgRySK9voWjZkpgihislFBJ22MbhIFAUlvANWQMIxodzr0+gPE1Kj0e3Q3l5mrRaBjJI0xQYRWIVKZZLXTo2oilE6oKsPBlkIvzfL0mRYXV1eI9TBNg3PiamOjnhLvEBlSp2mM5p8X8TB17DkE2pg8XFZUQOKYEjaJnMn8LDsNFRQx4DKt1xcErVaL22+/nZmZmRHNy8dvXSifUoqJiQmCIGBzc5NOp5Mzu0ajkWvp7nnHjAF6vV6OOQdBkMNGDmJw//vPOK2v0WhcZ5GFYUi73c7rFgQBU1NTLC4ucuHChdyZCKPM3Yeeyvru+eACX/Musxb9Ot4KcszQr3NZvY0xrK2tce3atZz5uzw9ThC7mHw37k5TN8aMRN0EQUCv1xuxIh0U6ISuG18n8N34FyOLlFJ5cjgn7B0M5OoRx3GebsI5lF1ywMnJydzKdGWWwV/jIM9iX7r57QubcZair6jcDO0KARAE/awTNdCxuXOCABPUhtiZB1GkRtjausrMkeNM1VKSzav0Om0kyjL1RTW0UYhWVOstut0uSoVEKqDT6zJYv4hJOvbg+GaFyeYkQdhgY2WNWg2iUOhtrjM1MUU3jon7hoYI62urtOYbdtHXanZHrRFarRYoQyfWXLmySrrxLGvnH+HA66r06rcxd/AwgeXMNKemIa4TtDfornZJ+gOaNeG13/iN/PtPfpxeb8tr8yi5FEhG7DWttWXhHtbunxKls/TaBvIcSWmq0VnOaGNs2KgK7DkEYyOOXiAV45bdovV/L2qNSiluu+22PIOni87xF7zT4rrdbm7mDwYDVldXCcOQyclJJicnc7+B26XrnIpBENDv93PNcjAYWGhQ61wzdYzeQRbtdjsPWUyShFarxeTkZF6vqampXHN1m8j279/Pq171Kj7xiU+wsbFRmh5iHPMv0yyLvxctgXHjV4yCuVnyy/Php2IYs6tfrVbj2LFjLC4ujjjPnTXm0no4xu8sLQf3bW5u5laCH/sP1mJ0/e3mSb1eZ2NjIy+zUqnkAte9L4oiWq0WzWaTZrOJ1jqHplzeIT81g4OYXN07nQ7tdjv3C7n7XN18iMyvb/E+n/xwYXfNL6fM+rtZ2hUCANVBKbJNWK6TNSLexFUCxu4Yll5CZ+U0Z58Ujh2+HfQWDHo0mwYJIrq9NqISej3D5uY6E1OzSDIgXl9G9a8x6PUxgzab8aPMH76beGWDuKlY3VgnWuuxcPAQaZqytbVBD5hozJBUp6gv1InCEOiTdNuoxiSm3iBQmkqny0Z7nQtnHuPa6lMM5DCH+k8wse8Jpl79OvpTR6hO1FC6QmI0Ua1Bc+Ygca1FLRkQNgOWV07xwEOfy81Wo1IbpaM16GHgTnYYGClWszc6RZsMLxRIs2M10YMhJIGCJEsOp+OsLwGMFQqJIY13llHA9UnMHJNw5Gut/X6fy5cvMzMzw+zsbK7R1Wq1XKNzYZlu+76LKHG/O4dwGIZ0Oh1qtVqugTsG48MEbiOZu+Z8An5CMGMMX/7yl/MFv7Kywv79+zlx4kQeluoEW7VaZXJykn6/T7PZZGJiguXlZR588MGcUY2jIuP0tUH/7yKzL1oCPvmY962gYj38ujjrxkFus7Oz9Ho9tra2cjjIafeOeTvnr7O2giBgbW0tj7+fmJig1+vR6XRyx60xZiQpXJqm1Go1+v0+tVotn0fOInBWmxMszkdz1113MTc3R6fT4Utf+hIbG3aTpgv99AVAo9Fga2uLIAhoNpvXKTfO6nBUtAzGwXxljN/v0+JaulnaFQJA1HAjkyiDUjbFsd8BRkBSITQR+6aa3DbbYi7qs3H5HK2pCpWwQm9zFS0hUWOSTrtCY3IWVW0RhDXW2heQfhtz7TJaFGmS0E0Srjz7GC3VoF6fpVKrE+mQVCuk0mByYoJqMkBJyMbGGnPHj0GvQ9LtE9aa0KhDrYY2KZVWnal9+7jznnv5kz88z+nOJh/64I9xeK7Ff/Wj3088/3KOf+v3oCZmEVWh19sgCEOQgM3NNjNRwGtOHufqylnOnj1Dt7eF5fTkOYqMiYYMQTLtX6eEQ15uE2pkyesEP2bchogaIFJFzUGRpgmJ3tzZcfW0dvd3cfI7s1wpG+8/OzvLYDDI4QLHyB3uLyI0m838u8sZs7GxkZv76+vruTbv7/R0QiCKIjqdTq4RLiwsjFgJzvnnwv/6/T6zs7OcOXOGhx9+mNOnT7O0tMRb3vIWTp06xYkTJ3Jrw2mz/X4/h6XuueceLl++zIULF0bCTx35TMFf7O5a8TefikyhCMHcCgEwzqIoY2QOMgHyTLu+A9UJB18wAHn/NxoNJiYmUMpmVfXDap3QcMzdPefu1Vrn88LPiaSUysNQL126xOTkJPfffz+1Wo12u00URdx11108/fTTrK+v5/4Fx9TdeQI+vOeCENx4OR9RUUt341z02bj/x1kNxd/GQUlfKe0OASD+jtXRXCGWbENrtRp1U2E+mmNmYp5qvUEl6ROZlF67TWoUvSQm7aRM7lsgDvsEQYU0VJiwSmV6Ad3vsXrxabZWL3Px2TPcvnQXB6vLhMEiuh4SRlUQhVEVep0e/bRHoAZU0gTafZJKnWCyQhpDoA0YZY9tnJiiLhGdlWuYuf385vs+zLMchCfX+e3P/grv+pu389/ddpLw0BLR5By630brASqNUTpl5dHPomoTbHUu0R0sQ9DH5UeyXWBQUpD4xoAZmqZAlhzCeYuHjsogEAzaHgQvvqZorSpNn50+EawMHijilg5HrlQquQDw8610OvYsZ+ewbTabI5FDznewtbXFpUuX2Nra4urVqywsLOTMwMVtu/cnSZIfJOIwZZd6wA+5DAJ7kMjk5CTHjx/niSee4I//+I9pNpt84Qtf4CMf+QjvfOc7+Ymf+Anm5+eJoohut5tr6L1ej0uXLuXMoYz5uz4ooxtJ5ewLtzL83RcQO0W+ZeJT0RLp9/sMBgMbqu0lcss3SWb91O12SdOUqampfL5ubGywsrLC2tpaHgbsnLi+78ZZC86n4May3+8zNzeXC5Z+vz/iF3Jzp9fr0ev1+OAHP8jHPvYxTp06xdve9jbuv/9+lpaWeOKJJ/LIIDd3NjftCX6Li4tcuXIltzLKwpiHfG00Ustd9/vN/+7DPuNgwp2gXSEAyDRaUQa0lxQLDShEAqpBhZpq8oqDS0zVq4QqRPpt0rjDxlYPIeTy6jpTrUkas7cRplX6/Sr11jyzc7Ms3FalmnRYnZwn6V7muWeWubrVQc6eZvnaBsderpnZf5DDJ19BZ5Ay0QgIJUF0nSQZENQnWLv419Qm96Pm5lBpAtUW6BRtwGhDUK2w/9SreOcd93K+dYo/vDBBd/Mam5/4t7zvTx9g7pf/S975Qz9B5a7XEWQ5i+j3GHQ26AyE6sbj/PgbX83vfqzDI1fOI9gDL2x/2A1btruEVGWHwyiDpN5EMYqcx6os/lxrawuElpGGyrcMrBCLKoYw2lkB4JhE0fnmX3famkvjDMPTnpxW3uv18ggNV1atVhsJIwzDkPX1dZ577jmuXLmSY/fGGFqtFktLS7lAcEzRf65SqTA1NTWywUfE7vScnp5mcnKSVqtFkiScPHmSD3/4w3zqU5/i/e9/P0eOHOFtb3sbc3NzOdzgmJ+IsLa2xjd/8zezsrKSwwrDcb0+lNNnGD7uW1SMXBv8IAC/bCh3vt8sjXM++hbIYDDI8XbnY3H19eP1HWzm0j+7aKooipicnByJwnH31uv1XJi6NB5A7sAfDAb54S9u/KrVar6bN45tskhnmZw/f54rV67wMz/zM8RxzDPPPMPW1hanTp1iaWmJ06dP53BPo9HIM4e6PSlnzpzh4MGDNBqNUmbtO/qL18f1ZZlvpwgLfd2EgdrGWiY3ThsKqXLb1AIHZw8QqgCjO7Q3Nul2NzDEJLFA0icZDJCwSk8qzC4eoTKzDyoV4s0VVi6fYfXcWZ56/Dkeeeo83X6blStXObzY5bbNS9QOz9Fvr6BUjY7WNKeaVNIB2hiqQUx9fg6oEl+7SpAmbK1dpbX/ECIV1GATwpABGhotfurd38k7rwnf/e6/R2zg5Kvu548++TleufC7vG6+Qdo4SrfTxgy6bC0/zvq1TfZVe6TnPsPf/Y6/xf/0oT9guXcG8J3BFkO2m+MMouyeBQREKQJVjgO7cwCsaerF4wN2fQkkhrCyswLAZ3Bl4+ogl4WFBfbt20cQBAwGg3xxuXh/h8s7nH56epqZmZl8UbuTop599lmefPJJNjc3WV5ezjdv3XHHHcBwU1ej0RhZQG4n6mAwyB2A8/PzOZTjGMyxY8f4yZ/8ST75yU/yzDPPUKlUqFar/OEf/iH79u3jW7/1W3PNt9frcf78+TzPzdTUFG9/+9v50Ic+dF2iuCJMUwwbLTL4XEHSo6mifSHi9/etSAXxfPCE86G4etRqtXzDlYNs0jTNhbyLAmo2m7lz1sEoTnC60NDNzc3ct9BqtfIwYfduZw24dDFRFOUbuJwV4DYDzszM5A78Bx54gGq1ysGDB2m32zz++OMsLS0xPz+f97eLCgK4evVqHtW0vLzM/v37R84q8B39RcXHH8NxPK9IxTTpN/rcdrQrBIBYzg9jNiMppVBVxUSjyvrWGnVVodN9jm5nHRNr4riLTkOm5g9Tb06RRE1qMwvEKHrXLhIR012+TKW/yQN/9ic89tQlLq9NsrkeszgX0ItDqpUm9ajFoLPFxFRA2JwkDSIC00UGazYF9cRB0kgTVOpQrdJiQHf1AkkaU5ucRSWGCiHEbWLTYGGizxf/7c/zd370Z3jy8QdozbySaHqJp/7yY9x+6tsQqbC2NeDi+Ss8/cxDvOauo8wSoWjzvW99G7/+B+8dHfSR8TZ5f9nuc9qhxziMYxguCtTutsZjMFrHgLK+l+DW5YwZd93Fenc6nXxxt9vtfPMPwMzMTH6gS6tl91hsbGzQ7Xbpdrtcu3aNz33uc5w+fZqVlRWuXr1Ks9lkcnIyZ9Krq6vMzs7mESZuE5APZ7hoHiDX1P1NYo7e+MY38r73vY+f/umf5vOf/zz1ep1Op8PDDz/M0aNHc5/E+vo6586d49ixY8RxzKFDh3jTm97ERz/60ZF000Ut0GcY18Oh4+EB35rwtcadTgVR3K/gKA84yOAQlyPJ1cdZXL4mDuQ7fl0GzkbDRto5C6BarXLt2jWuXr3K2tpaLph9xUBEmJiYyM8NcKm5XSinMYaZmRlarVZuHfh1qNVqHD16lC984QucOXOGkydP8uUvf5kHHniAl7/85UxPT+fKQBiGeWrodrvNoUOHePLJJ1lZWWF+fn5bi8ynos+m+L3s3p2mXSEAjBFs5szheb9k1kCiAypJyL76HBNRBL0O1FJMErKx3md1dZ2l2xYxqmZN9HCC5vxt1CLh3LmztOpVko2LPP35T9Ffu8SDn/007/vCWUwn5K7Fl5HoTRYWpgibk0wv7KfWmiUVe0RisHmRjWvPMdGYIpUmm/EWrelDtNe36Kytc+XCI1y9co0wrBBEDQ4sHqU502Ju4RBxb5l0c41Kq8Xv/++/wF985lEe/ctPc9c3vpJD3/Ay2svneO7CRTaurbFxbYNzZ56k0tmidd9xKpXTHH7Zt3Pyjtfw6JNfpG/a2Iw/3mInQOvU+gUCf1F6YWIq20GaHTNjjMniR1Nv8lnGphQIO58LaDsHZRAE+cHc7nxXl4u93+8zPT2da1hBEDA/P0+1WuXSpUuICN1ul9OnT3PmzBk+85nP8Fd/9Vf0+30WFxfz6JLJyUkWFxdHNMp2u83KykoeB+7i0uM4ZnV1lX9ENnoAACAASURBVAsXLnD16lUqlUp+Zuy+ffvy9MCDwYADBw7w3ve+lw984AM5xHPw4EEuX77M2toaV69e5ezZszzxxBP0er3cCjhy5AjHjx/nySefzK2cIpXhxK4vHQ5exIr9vr6VUT+Oxll0TrN31pZz/Drrrdvt5s5UJ5j27duXO/xdFND+/fu5ePEirVYrj7tfWFhgbW2Ndrudx+/7cKBSina7nV934+3yDTWbTQA6nU7+fKfTya2ENE1561vfykMPPcTHP/5xlpaWmJ6e5sEHH+TAgQMcPXo0d/avrKzkba5WqywuLrK6ukqn08kF2Dim78iPACr6VMYJ/DJ/wc3QrhAAuVc/S2ucd4YJmKg0WJpZ5OjMInX6RBMNLl46T6fdA1Oh0WqS6JSUhA41qlGN9UtP82wcsHDoNlbPPcHGuUd45cnj/NA/+G0efC7h9tu/iem/8Z/zhd/7ZboJvKZxnCP33IMxhrjXtoexJG1UpY6aPMzApMQJ6GCKCxeW+chHP8lTZy9Tq02DrtLe2iKpLVMPn2NuKuTbv+k+Du+r0qpWMf0B9K/xqpcd5O67f5B6LcBEdRqH76N79jKb7Q2+9PjjrHV6mLDJo6e/zNHbF4n763zTnffDZo+Hn32YvkoJ/Akg4xKK2QxKDlZzNE5b86NMbgX5k9af5NVqldnZWWZnZ3OHnHP6Oe3ROWVdNM/a2hqXL1/OtbHz58+zsbHBY489xqc+9Snq9Tp33XUXTzzxBGEY8oY3vIHDhw8Dw23/7XY7D93zs0IuLy/z8MMPs7y8zOXLl+l2u3l46MTEBIcOHeLUqVN5OKILKfye7/keer0ezWaTarXKgQMH8sNhHJMfDAZcuXKFO++8kzAMOXnyJGtra1y6dGnEge/q6ZhHWRjhuP7102cXaac3gm2n+Ts4xh2iYozdVessKifQnZ+kVrOKW7/fZ2trK9fST58+zd13380jjzzCo48+ykMPPcSdd97JqVOnWFtbIwgCFhYW8qgt5+x1ETlOs19YWGBubo44jrl06VK+Y9xlIF1cXGRzc5OrV6/S6XS4cuUKBw4c4C1veQsrKys0m01uv/12NjY2WFtby60OYwztdpuFhQV6vR6NRiN3Sjur5fn6vcxRvB20Vuz/rysIKE2T63c+aSEiIOkMSNUqbX2N2IQs3fF6njn9GM+cfpw0bdOsV2jOzNDZXMdooUeMqs+wfOE83eUzXHj8i/zSv/sQD5zrsjg5x5XLl3jmqSd494+/jb/8g4/y9r/9WqYkRMKQfneLShQRhy0atRb1Skqa9Ij7MatbPX7lN9/H+ZU+SWWa1WeeYnVthXq9SrWyHyUV2p1V/uiTX+Bd3/1q3nr/NxLPt5hoRlSJCLttuuEM8dQiEQm3LR1jbfkKiRHOX3iWYwf3c3A24JmnH+bOO9/M5GCdexYX2ehd4/LmJp3BKnknjUvfbOwJCSKgTbwjk+SFUnFCF7Udh9M6THVhYQGAc+fO5Rqi07odDFOtVvNdpWfPnuXJJ5/kIx/5SI4xt1otvu/7vo9Pf/rTLC4u5phvp9PJw/lcKKLDnldWVnjwwQf58z//c65du0Ycx1y5cgVjTL6rWET4sz/7M97xjndw4sQJpqamcsXFWRK1Wo16vc7MzAwXL15kbW0tZyibm5ucO3eO++67j2q1yrFjx3JrpyyscjtGUPQHlEX/PF9ZN0tl0Sou0sdZdc6n89xzzzE9Pc309HS+uc9txHKZVgGmpqYwxvD0009zzz338NRTT9HpdHjNa17Du971Lh588EEuXLiQb/IDK3TW19dzoeP8C27PQLPZzN85Pz9Pr9djbW2NBx54gEajwb59+zh58iQiwunTp/MNgbVajaWlJbTWdDqdfP+BC0qYnZ1lZmaG9fX1fDPYzMzMSAZYP/WJrwgV/TvF34t968OBO62w7QoBMIQiAmw6aIXRBlFCMjBUG5DG6/S3Vmn3hHvuCal0L1pNkQZxouhtdalMhCgSkl5CGArp1Q7x+kX2HX8Fn/2dP6FpUmrTAVtXrhF+5r184JEJvvv1ryJKUzphhNnYRNVqUJ+mHsRsrj3L1tYGk619rGzF/PGfPcinPv8YcwcW6W0uM7f/NsJ9L0eFk9xx72uZn5/m2oWnOPPgn/L/c/emMbKl533f7+yn9rX37rvOvXf2GXIoDTWkKJNKCFFxABmxGUGJEjnJJ8MKkMABEiCII0AOAiSAPySwHARwLAGJRZqWFceOQlshpXAkkUMOZyFnuXP33pfat1Nnz4fq5+3TxW6K1PTIF3qBi+5bVV116rznPMv/+T//59f//v/Jc8+/xI3cFCMfQ66GoZto04C41yZJQ7zUpDMaYheX6LVSNlsTpuMpsdflZv8IvVagERZ5fmWd29oO270AL5oQazFpenLTZaOIbMFX10Ved25uKgYQwTHL6jw5govYVzg7UpHPyxZeb926xfb2NsPhkHJ5pqEkRULDMBTlTyZIFYtFvvzlL6PrOs1mE9/3ee211/jggw/4xCc+weXLlymXywyHQxXNC0VQuoj7/T737t3jd37ndzg4OGAymVAsFtXIyY2NDabTKe+++y537tzhN37jN/j1X/91hVELrVCogdKEJNHse++9p+iphUKBp59+mlwuR6PR4NKlS8Cs3iCKobLkZs86zbMey/686Ej/R1lZoyXHIewnabASGqdkd1KDCYJAGXKBf3zf5/Lly+zv7zOdTtUg+Lt371IqlVSGJPs5Ho8pl8tUq1UFFYpDWVtbYzKZKEG+d955R0F/6+vrqmnwnXfe4dKlS6ysrKi6kMwldl2X5eVlBUOJs+71ekodVJhJUp8Qpyb033kq7zy8k2V6zT8//5qLXo+FA5AvKBOr0lRD03T0RKfkOrhJxLDdI40meL5FNdpnuWCwV6kSehMc1yBNY2Lf42g4IsXCDXKYvk/r8D6/9/9+Dz/UKRUNpsMxUTxGjyM+d+kG/+lf/XmalRxHW/dZXr2MbZXpHt3B8cYc9UfYeZff+7+/hrNyi//5f/2HGLqFHyc8+cxz/NFbD7Hr6zy6+x1ee/2bXF5tcnD3O6RBl2phnb/793+T//5Xf4mKa0NUZDAd4uRKTIdHuOUyq5dv8MxPRNw7/JcYVp43v/+AL/7lv8TA69M+/AB75SWK+RyXK3WKkYbn+ezFCSExGif6MllanaKbpemM4X9GWpnECemxIJ5ClP4cMoVspCo3vuD9whpxXVdJLAh/3/d9JfMwnU4JgoDDw0O++tWvKrhoMpmo9v/FxUV+4Rd+gVKpRLvdVoW/IAjY2tpSBcl2u0232+VLX/oS29vb6r2m0yme5/HHf/zHCtPd29sjCALy+Ty//du/zRe+8AWiKKJeryscut/vUygUuHbtGq1Wi/fffx9d13nw4AGf+cxn6Ha7ClYQ+AHg0aNHDIdDZTDPOl9iIH6YEZiHkz7KdVaxUrT3padCoJ98Ps/u7i6u66p9l2KtHDegGGEynF14991uV2VQxWKR5eVlXNdlMBgoqLDf7xNFkco8isUi3W5XPQ7w4osvqjGihUKBXC6nGGODwYCFhQX29/eVXAigjLkwluR6qtfr5PN5giCg0+mwtLR0LDnvqcdFbG5eIuM8LH/+Xj3v9Re5HgsHcNrzzZQtNU3HSFPsOAFvTOSNQAu5efM5tHwJ7Dqt4RbJqMXicon9/W2Wmqs4pomehkT9HrvbW/zJn/wrOp1ZtODFEaOJTtFP+du/+p/QqBmYbkRgWjSrZab+mP5wn2K+QTtMWFpfxBv3Wbpyi3/0e6+SRlP2WgekpsP9Bw9xdZvJwXus5Vwme33ubk4xgiGJPySubPJ97TJf/ZMH/OxPNFi8fpnyyjppmJCax/Q0x+HKc7f45Fjnq1/+TR7u7TDVJkwSmzBukw4G6AYUSjnSMOKnrl/j3c4h7+5sEqQ/yCGHmU5QmqbopgHxCd99vviapAmz4TIfneGfhyay0A+gJizFccyVK1dUYU4419VqlYODA4rFosK4O50OnU6H119/nVarpdQbkyShXq/z+c9/nlu3brGxsaGwWk3TGI1GJMlsPrMUJ0ejEW+99RZ3795lPB4Dp4XnJFuQm1kEwL7xjW9w69YtcrmcYhYJ9BCGIfl8npdeeont7W1effVVHj16pLBx4aYLQ0bGW+7u7rK1tfUD1Nn5G38eMpjfV3nNn0cheP4YZTRnlqMvUh3CrsqynqQbWzq7DcNQfRzy3cbjsTp/q6urSgCw2+0qHP/o6Eg55+w90ev1VDYiU+RkH4+OjlQwIcHGzs6OqlVkm/akO1hongcHBwAqUxStKDjRJpLzki1IZ6edzTvQs2CfH3YdXNR6LBxAlJw0JqEnaLGFqYOLRVW3SL0jUm2MYTZZWd7ATE3aR9/D1FZpYXDn7kMur6zgB2PGfR87GTJq76G7VV564ad5+okhzXc7+EaBZ599lpefucrG+hKd9hG5nIPvBWg5Ez2eEvgRU9NHCz1e/9a3eO2PvkVUeYI//Mb/h2PlsTSNXu+Q1Ejx4wTDsJgkGqGWYhoGaRCBblCNEgaH+7w9cvls+TreZIhbLGDkSuiphxYEpJqOZZh8/ONP8m/+O7/CV37r7/HqH7/Hv/XJG9z9YJ/rn7TQE/DjiHKjgNGKmboFBqUqW4OUMI1I9BQ9jc/F2mcsoJmZF5ggScJTF+GPw0X+cVaanp6jm23Fl5RfuN/VahXDMDg4OCCKIhWtr62tqa7aKIrodDpMp1OF79+7d48oirh8+TI///M/j23b1Ot1bNvG933K5bJyKAIhtFot3nvvPeI45tVXX1U68AJBSL1hMBgo4yAQTZIk7O/vc3BwwOrq6qn5xMJz13WdYrHIZz/7Wd58802+9KUvKViq0+koeqPIX6RpysLCApPJhFardYoFdF4hWJxelnIoj82vi97bsyiOmqYpbF/2VrqAS6USpVJJSXQIn75QKKgIPkkSHjx4wN7enorOha1VLBapVCoUCgUlxV0qlQDodruq0cuyLFzXVTLQAttI5ii1Jjn2rEy11IaEMiq/Z3so5FqdTCb0ej3K5TLLy8unvrPUrubhuux5kt/P2qPz8P95mCj7mg+zHg8HEJ3QD5MYDAzyacpSPk9RCwkSjyTWKFdKdLqHLNeu0FyoobeH3Lv7gE+9eIv+oIORgGXEtDq7lCtLLF+6wZpZIPFDrt2aMol1FtY2qC8skoZjVjZW6BztUqsUufP+I5589mPUS0289JD+wUM+9cmf5p/+zr/gre/MopK1pUWS2KeYd5lMpzMUPUlmx2xDkmjolkVRC+j1RrDyJFt9g6R4Fcwhup2nN5xSLhaw+j20KAHHIpeL+NTP/jSvfev3+eDt14leKfFo8x4v/qxNtx/hlkuEgzZOocSKYbDb63Com0Qk6MSkmk5yLAutZS6S9FgmQtNmE9Y0XZ/NXUh1ND2bfh+Pibzglb15stxwgWREfVFEv+DkQt/f3+fGjRtKH8Y0TRWd3bhxQzE/nnvuOTRN4+rVq6qhR4S6BOPP5/MsLy8zGo3odDpMJhP6/T6vvvoqW1tbSi1SIBgxpPM3n67rylHs7+8rfRihedq2zWg0UlBco9Hgs5/9LK+99hr379/nqaee4t69e9y4cUMZS9/3yeVyVCoVBZ3MSwT8sAgw21n7UUoGZFc2OpasLovNB0GgOPPCjjk4OGBpaUk5U3HG4ih2d3cVg6bVaqlmOYFshKorEJLjOKqDW66l/f19DMOgXq+rZjw5x/PnUkTghGXW6/V44403uHXrlorgs01d2W7jxcVFxuMx+/v7KphZXl4GUMedz+fxPE/Bm9ku3vP25bzns9fDRTvzx8IBJHEVODYYRkSq61RNm4Y5JegfYeHi5o1jTnadXjhhafVTHHzzS3jelKOjA9aWqkzGAzQ9xnJqVDeeRa+uoJl56qUiy24ePwKjWGd0tE8SjUkYM+weoGkp5cV1NMvkaO87jHojxlqRHjV+4uf+XdrfeB9t5TrtvUekvS65fInJeIpu6ORyeaZeQJr4pIbByuo6YWLwN/7z/4HXXvs+0/4BU3Tu7OxRr+TJmzYEUxzTZzg8mtUH4oSbz73IL//Hf5P/8e/8LaYYTA47vPXmd9i4+QJ+6GPpKZMowbFc1ssV3m23iLUUPUpIDIuEhDhOMTVDur4QQb0kmc0TmME+KWAq7D89vgTSc5rwPszKRqRSyJWoTwylDFjRtNnw9uvXr/Otb31LFXqr1eopvvzly5dZWVlB07RTBrNcLqsIU7qD5fmFhQWOjo44Ojoin8+fagjLdhiLBHGWriqOYW1tjdFoxC//8i8zGAwUHRBO5guI05hMJipCfemll/jiF7/Il770JWzbZm9vj+3tbVZXVxVtUzIGYQ/J52aj+h/GK58fYyl/n/15kWtemkCCDNFpyg50yR67KLNKsVx0mAaDAZZlUavVFINGmESO4yh2kLyf7/vs7u5SLBa5fPmymgchrKr9/X21zxJ4zJ/LbJb31ltvsbOzw6/8yq9gmiaj0UgNuhEqq1wfgBpqs7e3x9raGpVKBc/z1LUt16AIFmZhxey+za/5jGH+NefVCD7MeiwcAHphtkkG6FqKbRiU8z4WCVa5hj/sYtouw+GQ0Jsw7SasPPUkxCaurjGahtx5+IiSmVIuNWiurpMYOSzHpby0TqpbWJYDQcpo6DEaeyxYJsP9HcJUo1hboj/p8/6b36CQd9FrlyjoJe492qdSXqBQfMDkyKI9sRgGBl2vi6alWFoOiNA0HU2fadIc7W1RWbjJP/wH/xujw3ssXn2Gt958l08906TvR+RzGsQh49jH1C2m/S5moU61ZvHKZz7Ns//X89y5e5fnLpcIjt6EjauQ5vAnPQxrNsO4VKxDeBffcHHCAXF03M2KBiIPAaTHjV0aKUkSn20UEmEGwSnxuYvY1swFq2knXb9JkqhCmah9SgNQpVJhPB6jaZpK40UHSBghYtSFsieaLJPJREVzYRhSr9exLIudnR3G47GCFmTQ/NNPP0273eb9999XUZ8s0XsRcsJoNGJjY4P33nuPVqvFyy+/rD5XDJRkB2LYc7kci4uL/MzP/Axf//rX2dzcpF6vc+/ePRYWFpROjnxuqVRSxmY+Czjv9z/NCHwU+HFWckKyM6mXyN7Kc0K9LRQKtFot8vm82kNpqhOMXqAdyQaFBizGHWaMqSRJWF5eplwus7e3p3o2pD7Q6/UU3JOV+hZ6pzTS6brOpUuX+OQnP8kTTzzB17/+dfb396lWqxSLRQUHicPK9gCsrKwQx7HaUwlShHWWPTfyuzjr8yih8xlc1lHJ8+J0L4oO+lg4ANusZL68RkPv4A66GG6KbiT4vocXG9QbZSZBzGJzhUq5wf7uHu3eIVN/SKlQwF5eRHPrpHaRJJnQae/S6R3h5suYVp7hNCaMwTE0QrrYNpTzTXbu38Z2c8SRSaF6iZ2uTz5vMopnQmXPv/Ax7OUxh4eHrD77Cgf7bZqNJbp7HzAZbZE3dSItxTDAdW0me29R6j3gr/37f5Np6jLu9zjsOBTzIZGvMxi2MUt5HE3jaHeH6pqGU6njVop84S//B/zv/8t/y+b+Ls9fuUJ78y7V9euYlSWsMKDgaLhGyuXmBvv7hyRaiSid0WaTJME2nZOoWz+Zs6rF4Ylh0U9Tz+Q1oX+xDiA7X9cwDFzXVZGRRMqiny9865WVFYIgOEXDq9frSvhNinue5ynevchCVCoVRcPLjgMcDofUajXVHdxut1lcXOTSpUs888wz7O3tKSzecRw6nY6idYrRCMOQe/fusbm5yfPPP8/ly5fZ29tjZ2eHn/zJn1QUREAxjESRdH19nc9//vN85StfUf0K3W5XFbclgpcmKKExZvsDsgwvWVkncZZBkIjyo5gJDCeTuAqFwikYSFQ2RatJagFSDAWUFIMcW6FQUPIKwv5JkkT1SYhQYLlcplAoqKYtoQlL8V0Kw8PhENd1FbtKhviIcqecX1GR3dvbo91uU61WVZNfls0k8ybkevB9n+XlZcbjMcPhUNU4RLIkO2tYGuQcx1GO7E+rBZywIjUlMHjWNfBh12PhAOBEtdCNJuQ5wtJCHM1GNzSSNMayCuimRrlaw85b7D26y8c/8RTfe/8tNAzKpQVGUwPbS1kvVnGOPf/UD7DikInXwcoVKVZKLFbrHN27TzTu0R/2iJMpWlzGLRTxNYPnX3yOP371m+iFFW7evMlvfenvsnDrJTaWm7z/3h3qeZvu9pvovkfRmTW7oM0u7siH3Oqz3Hjxc/zul/8J/8V/+V+jAWuXrvO1P/xnXK3UWN1YJPIisH1MoL+3SzFMMM0i+UqRaRQRYfJw/5BVd5dcuQlOBdNI0dIQi4hnr13h9X2PJDSItfAkfUyU8A9pfHKBBel0NnaTBDvWlDREop1ANWlysWJw2QlYcBIxAgoLLpfLKnqSSKpQKPDgwQOl7SIXfS6XO2Uw+/0+nueRJCcCcbu7u4xGIzzPU7RS4abn83mlHrm3t6eohAsLC2xvb6uOYBEOE2Mm9EbTNLl27ZqShphOp6ytrbG/v0+j0TiVZQyHQzRtJkOg67NhKGL8er0eDx484ObNm4orLt2xV65c4eDgQN30sn6Y8RfoSaLV7PnOZhMXtaThSiJ3TdNU9C+RPaAyIdM0VQNfuVxWhlQG+kgmJBx9wfuzM4DFEEqPRZY6KZlCv98nCAIWFhZUB7ZcU8Lxl54Tca6+73P79m2SJOGpp54CZuweoScDajawSFAXi0V1XUoDWhiGqmlRJs0JlGjbtmpWA07Vu7JZZ3afzisKZ9dfmIEwAImu4yQ+ZdtnESiYOnGaMBpNCTWLaBqx3ljivXfeZmn1Bml3k4Wlazimi+XkmcYaRnUJPVfASFPQAuI0IdU1DCfP+lKVSRBj54vo8Qh/1KPVGVAs5LDMPFM/JNT6HNx5hyDQWWou0Lx2iW/8wTf4r/7Wr/Kf/e3f4MmNdfr9Ac/+7F/FPPqAf/y7X8FxF4inLVIrxNJSnnrli3zvm99k+zt/wOr6Ks2izs72B/yjf/AGn/jJl3GLJuMgpORUMdwcRT1mc/MhYRzhVpaoFkqsrT9Br/sO3/jmq/yNF55nMtjDWtaJJkPcgkuQ2jTzBq69wCTuoGGjHWsnJcwa6GbrBA7SEn02ID5NiTlWkUwSSGcqrBATa8UL31cxonJTCC4qDBupAzx69AjHcRgOh9y8eZM333xTFVld16XRaPzAsJbFxUVlOBcWFuj3+4zHYwaDgdJ9SdOZgJwMZ5HPazabfO1rXwNmWjS2bXPt2jWm0yn379+n0+ngOI7qD/j0pz/N4eEhjuNQrVZ56623FAXw1q1b9Pt91aEqssSiC1QsFmk2m1y6dIn9/X0ePnzIL/7iL7K1tcWlS5fwfV9F0Wtra+RyOSVlDWe3/svv2bnC8w1DZ4mSXcSSjE7wbXHgkgVlC+gCDQk81u/3T0XggJLhBhQ1s9vtKme9sbGh3m80GikCgLB15PoSJpV0ek+nUyXQ99prryk4sdfrcfPmTVzXpVarsbq6ShRFlMtl2u02uq6zvLxMHMeq2C8QlXxfOOlb6HQ6yukJLVnkQsS5ua6rIvjzHLJAaz+sVnBe5vBnXY+FAwg1i1wSspaLuWL7RMMI3cyRxBG9/oBpHOCWHTr9EZ1Wixde+kkeHb5Dtd4gSVwMs4xhV8jniywuLNEfdLGNEhN/xPr6dUbemGLjJvViHU3T2H/vjwimY8JgyjCJSJMRi4vLBLFPHEVs3b/NNBzQ9VoYesjf+5/+Lp975af41muv8XP/xi/wh1//Kj0vwdVqPHHjEziFCql/wLe/8TVy4xbPr+bRoxAt7PCH//KrlOplPv+XfpJCzkU3ReVQo9Vq4Q8OiUKfJI7otI/oTQ4ZBkMM3aHnw7e/9w7XVzcoOQaxZhCaOppZwDIdohgsO08an7AVUrKSsSkqSEgitOMpYmjJjAWUHs+WBHQjxdAvfiCMdL3KzQcoWqewgiTFFqPiuq7S6hGKqKTiwt6oVqtqMtPi4iKj0UgZjWwRWJRAJYUPgoBiscjR0ZEyGADr6+vs7u4ShqFio5imydWrV2m1Wuzt7ZGms4Hjd+7c4YknnsAwDK5fv66gKjEMEv3LORDWkXTCLi0t8cYbb/Diiy8yGo3UdxMufLZbVpZE99n/y5ofHJM1GoJfX/S+yk8peIpxk4xERm0mSaLgOJGCEMcutQD5m2yxVLKmbK1E6gWe56kCPsycxvb2toJdPM+jVqsxHA75zGc+QxRFLC4uAihpj7t3757KyDzPUyMiZX6z9KXk83l17YgTAFT2YhgGy8vLCtISBpq8TvYmW/T/YedVXivnAs4Xkfuw67FwAI4Gi3bM04UJwWSCW55V73XTJNENDM3C0nU6+7t43T0ODg4ol2q8cfsRumWToqGbBsOBh3PFIW9EhMGUhXqDYmHG511cXmfQ7xL09vAHXQJvorx5s3FsQEYdyuU6S4tl8pU1ppFDUjNZWj1gPO6zfvUKd999jU//zKeIpyM6m3W8SZe1qyv8868+JNF0zGmLajHPcDjC0CL6rX0+9emX2dvbY9TvUK43WFpuMujvYVozKpyhQRwGWLaLg8X60gZvf/v7VHIu40mXQvEacRiRd2aF0WK9RuDFpJpFTIxmZCLDU1t6AhNYpntyg2rHBSnNPKGJJgmG7l7ovgrFU1gd0mE5Go3UcQ0GAzX96dKlS8RxzIMHD9RkJzHowhgR7rzASbVajcFgQLvdPiUrMZ1OVUEuTVM1TEZmyUp9QsTJspRCidZqtRr37t1T8KQwUwqFgipYJ0nCwcHBqcKiGAHHcRgMBgqGkiEkm5ubTCYTXnzxRfU9x+MxjuMoSAs41+DLc9mi4FlMofP6Aj7sEq69NEDJMcjnS8Qsw1O63a56XLIG0QnKTvKSYxXoRoQCuOx20wAAIABJREFUs+wuMX6WZSnJ50ajoTpx9/f3CcNQNecJtCcZaK/XU7TOJEnU+bYsi+FwSKPR4Pr169y7d49ut8vi4uKpqWZi9HO5nDLKYRjSbrdVNiLwlRh7MdYy1P4s3H++sCsSI/N7/xeSBVSypmxojzB9l1x9YVbgy+XpdfpoTg6/3yLnBEy8XcaTHrffeotrN56m27lDd3AIhsvC6hUWl5p0u130Qkp9ZZ0IjUkYc+vZF+kebOH1tuk8ukfoT7DsHCR96s1lwjgG3aNaqpIAb37vO6SmS3PlBrpZRPMmLCw1+eD2bZ575mN89+1vUnbztPZ3aXeGbO/1eOb6NaJoSpCGECeUiyWeePppRsMej+5+QETMf/jX/yNaR/d4+3vfwXUtbK2HwxTLddhvHaIbQ4ajPuPBHrVahbqb8M3X3majUsZdr3Ot6KPpFmnkceBZpEaMmTgkRqYxaKb3DFpCFIuyKsTEJ7LRGiTp7CeacdwjYM6GD1/gkptGfhcMVG6C8Xh8ajjL7du3uXHjhiqiTSYTLl26pByBRGSSelcqFfr9Pv1+/9S8XUnXJTqTBjLpCfA8j1wup2Ce6XSqjk0yFSkErq+v0+l02NjYUA5MmCTT6ZTDw0NefPFFZewFk5bawXg8ptvtcnh4qPTnK5UKnU7n1LhIKRDKe2TXPIyTpdbKkr/JRobiFC56maaJ53mq0CuZWxiG6rtLkdYwDBqNBoZh0Ol0lOyyFOolM5MmPIn8BUqROo/0WsgEOEBRefv9Pvfv3ycIAq5du4bv+0qETzK5MAyVI8mqhYqjBtScgA8++IBqtYrrurRaLeWwpA4hzkQKzuJUxuMx/X5fyZYHQaCyFamTzHP5z2J7ZR/Prnl68kXs7WPhAFaTfUqpR6HeJCTFn3p4k/Fs3GLg4XsjOsaYUrFKd2efQr/NwkKTleVVKqUy9WoVx7LRtJhypUzR1fATuLz+BI7j0Do6IPa7TPotdNMmGnmkiUW51ECLRhQcBz9I8JKYwWDMyuo1Qmze/t4H3N/c5a988Zc42DvE8IbsPfyArTvvQhBRqW9w8+YTjLwxo2Gb8ajPew88fubjzxMMJ1y7chk/vsyde+/z8Zc+xp3379HrPOKnf+rjjMdDSsU8oT+h3501J40mXV7/g99j3Num4KSEuoVZLHGw/5DlfI0JTRqLa3SHAx5sx0S6ha5DGp80MGmakVF3yKb+2fnCyXmzdy58aZpGPp9XBT25ybMqkBIBy80qN1C2Y1aaaXRdZ3FxEdu2Vaeo0D7jOKZUKinxN0BJMIhcc6PRYDKZMBwOWVpaot1uK2G4vb09LMtS1EPbtmm32xSLRUajkaorSHFa9H9u376NbdvcvHnzVNOQ53kK/vnud79Lr9dTNQzHcdjd3aVcLqsItd/vs7+/r87beRH8fE1AIsezeONZPP6iVpqmCo6zbVvRHYXdJccsjKfJZKK0+QXakP4Lcf6C4+dyOVVkFRpw9nxMJhPF5On1esoxLCwskCSJGga0sbGh9rlYLCo2kDSNSed5kiQKspPMTthLo9GIK1euKKlq+d5CKpDgI45jBSHJNSqidPJ9s6KN2fM4n7XJ82fVbrKPXVRd57FwAJrfxnYN/GDMNIrRSfC8Mf1uh+7wiDSaEgcDaqV1OiWXRrPO/sEu5XIVLUlJohgLnSSNmU4nFOrLVFYahCQY8ZQg7nB07y0cy6VUXyeKDygWXQw9ZOSNiIKY1uGYm89eJ0g6+KGOW8yxfmmNl155mbe++x36fZ98rkKCzsc+8RM8vH2HjcurbG3vEUQJVr1B4HtsXN6gunqN3fsP+Fd/8EfceuYZ3FyF7a0DNAKioMvW5j0s3aDX28UwLBI/ZdAf4Uc+OSePpdlolo3duIbndBiFR7g6OJUaoVOi1Z/yqN8npoAVRoQGM2onGnHCTBCIeQVBudB0kiQLL5xgjRddLBRapUS+uq5zeHiooiVAcfcFUtjZ2VF0TWnlF4GtUqlEo9EgSRJGoxFHR0cKt9U0TRkDSc9lGEm9Xlec/qOjI2VwDg4O1I0tMNV0OlVNXBLhvvfee1SrVa5fvw6g6ILSOCYFx0ePHtFsNmfXtKbRbrdVJiPaP0mSKMqjsEvk+4rMtZy7+XM5vz9ZfFj2er4Q/FEs0TPKynmI8Q+CQMkxS8EzK+ktsJtAZtljFngNZhIP4tDFcEsBWGC9hYUF5VQ8z2NxcZG1tTWCIFCzForFIp1ORx2P0FYB1b0tWaHMCs7CWXt7e9RqNcX6kWxBDLs4eHGGnU7n1J7KoBsJfLIwT9aYz1N5zyr2ZjOAv1g1gEQjSEOMyWQGxzgF/LDHNPZx7Rz96RSCIaPBGKKY1sNNinad9iSmVGsS4zOZdhj0DAx/RCuvY+WrpHaXvtfDnwyxDAO/12bUOsKLpjj5GuNpQLnQxLSLhNEmQezz4OFDVteewHLyNOoud995iySKaY171KvL1KsN3r1/hzQxuXTjCcqlGptDj3t338cPAx7u3Wby+0fUigV+6tM/y3feeouCFnPzycvcef8hH3/mCfoH94hNG8sEDZvhwKeb+ISDNlE6ISTBsRycCBprz7PZvsun8yYYLu1hl+/e2WF/vIFLAoa0mB9HXprcVDNVVd2YYdL6jPd5jPrMpCFg1ninaRDHycx5XOBKkoRut6u0UuRmH4/HpGmq6gHSDSwYv0TsUiCWmoGwgIbDoYIRYJbGS5QpUgSaNusU7na7ypiUy2U8z6PT6WCapnI8IjEhWPDy8jLtdhvTNPn+97+vIsl2u83KygobGxt0u116vR7NZpNcLsfCwgJpmnJwcKCiXsG1s5IB8k9E6YQjvr29zf3795WhgKx2U/IDBl6ePy/6B5Qhu+gisJxnOQZAdfNmYScp2E6nUwqFApVKhdFopLqtJSuQrEGyOnGM8hkCz8n8AKF0SjQOqMEuwsgxTVNRRoVQIFPBxNnIdVUulykWiwqikXqDnLu9vT3F8Mo2GgpzS4y9qNe2222laiuKqPP1gOwezRd1s0b+vKDsrL6PP9Nefuh3uIDVm/ZIgglFa0KxWCcIfELfOxZxmhVpxpPBrHkkjFhaW+Dh4T4PBzGuYzEZTwmDKf3uPnZcotcqUW+OGY+nEI5JY5/QGzEeHDCeelQqC5TyGjvbD0nCPEfdXUr5W2zv7LO+vsHewT7BpMPC0iJGFDIeBVxbuYKdq7O9d0irF9JYWWdz8xHvvPs9Hh50mE57pEzxA51HuyNGOZf8d/+EzYe3uXV5A92vkLNNjnZ2CMsmjUqB4XTAfn+AU76MbVt0e13Gky7LywsMxmNwQiItgaUX+Be7MR/TfV4/dNjynkLThydsDCHzpNqpQTGCvxvGiTLo/DpBGPQL4RVnlxRcJUIULF9gnay+urB2jo6O6Ha7CmOXDl+J6OUmBBQ7RIqBlUqFIAgURVAMgRiQnZ0dNQhc8GUx0lmtl16vp+Sf5b1gBulsb29zcHDAxsYG5XKZer3O/v6+Oq4oitR0qVqtpvbI8zxWVlZUhCjR5MHBAZqmcXBwoD5rviB41pLz96PAPBed2QmOL+wfiXiFBSP1jzRN1ShOYX4JBJZtjmo2m8r4i7OT7GI4HJ4qzEtGKZ8hheUPPvgAQInG5XI5NdZTZBpkjyzLUpngZDJhNBopPSYhJgiDqVgsKgOfpintdlvVlkajkWoKk+Ou1+vqGI+OjhSxAM4W0Zvf03kHcV7NQF7/Yddj4QDG0wBLDylqOqPhgGJjkfGoT3D8ZU3ThMTH8yfstTvY9h5rG0+x5ri8+/3X0NIYS9fQ4ojD/U32d+6ytfUuN69fxjFjkmDKsLNLtVIh0Uym/oR7dzZxzYA4dGlWNhiOO0wGGm6+zEvPXuX+1gFf/ie/y2c+83O4Thtv0EG3HbYf3cXSixzsPuBzL3yBL/2z3ybBxDQ00lQjjjQ0S2Pqj3jv3TcYmzqfrJfZvv0GK6tNpn249tM/wXCwyzBKyVdWCE2HfqeDniakBKSYM+wxNBjj42lFBuT5+p5DmIKp9dBx0Dm++TMD4snQQOVCSiXyn+ORzyLME4nai4YNRFNFmnEEKpE0OnsxC1NE8N9sBDYcDhkMBqrh6vLly6qwJzRK27aVBMB0OmVhYUEZmjRNVS9BGIZsbW1RqVQUPFMqldjc3ETXddVLsLOzk6mrnJw3yTru3LnDyy+/rMYTbm5untIsEuPfarXQdV31OMgxyM0bBAGbm5uq61P2RtZ5nPB5Y3IWTRBOCu4XuSTbkj2SaVlZFUxxAFIjELkPEYdzXVdJRsgcX8mM0jRVmQKg+gtGoxH9fh9AdQwLBFir1VR/QBRFanSo7L04FWGJZZsSYQZrSUFYggdh/chjUqMpFAqqsC1OYDqdqu8hmWWW9SPR/Dzj54dBPvCD0t4X7cwfCwfQnRapOB5enFBybA53t5h6IXbBwdALs2jBBy1xqJUs+oHPRhqxWC8Thh45p06328UtJxTNKngTlkpTvM59JrGPoemMvAlpqpHGKaQevd4htUqdxeYK7cERblFnoblCYuS5v7nDyIOPffyn6A76PHHree7e2+TBvfssNFfo9ve4N9riN/+P38JkFoGkSQyaDimYKWipjhMn+K7Nfv+Qp9bLNOsuRuJz9/b7JKTENly78QpDr07Q/gbBtMtSpUSYghf4aEYTjBpTrUKYGETx8UWDRZpqx9G7TnIs+ZCQYMYnUXxCdMKz1k5gHzgZKh4JVVS7eLaIRLTSnCNYaXZQRnZwhtwctVrtFCQgkZv0CAgzRPDfUqmkokdpuslCHzJdTIZ95HI52u22qjtsbm7iui7dbpfBYKD06LPQC5xAKnITigSARKNbW1uqh2F5eZkoimi32/T7fZVhiCSBYOXz4yCzRkGOIfv55xmM837OG5CLWDKFSyCZ8Xis6i/y2Vnmi0h+5PN5Jb2cpumpzEmch+xjVqlzOBwqhlGlUlHwX5qmSkgwqy7r+77C8kUiQvZNYB4p1AqFVqAreb1QxAVSFLqoiA7atq2YQtPpVDHDsvLnch6AU9fSWft5Xo1n3iGc5yj+rOuxcABBdYO9oUc62IF0CU3TKZZL6JbGdBpi2QaDkc/Un0WCV554jgSDVJtFk37gUSqVqGhXMbRd3MaUo1GKaYQUCwVcy4IgZRJEXLl0laE/xiz4hHqOze37WLkSulEkMS38KGJxsUnRG7G93WJ/95BSuc7acoN7dz/AD47Y6w7otgNCzSNIQzROhpxoKaCnmLqBlaY8P/AZ7e6w4/WpWDZR2Cca9WiuXaJeq5PXdNaevc4H03sMDt4mSmPcQpGB5xMlI/RK7dS5Uo0kSUYXJNVn8g/pcf33eKWpRsrsX3Z9lAXC7CoWi3iepxqgYFYUE+MtEZsYiXK5rOScszCJUEWlQ1Sac+aLbWmaKmPR7/dVJCZ1Bbl5xZhki5f9fl8Nc5dGnvkMQByArs/UOw8PD9X5lGOS7lJd11lbW2M4HHJ0dKQ+C06Ky/NaP/P7I593nhOYX+IwPgrqZ3ZJZifwizjz7DHL9/E8j2azqZyzQHsAi4uLKoqXDEIMrRR+szMGxJjK98wOWclSUKXhTOoAlmUpIoI0ocn7ZM9ltg9B6MZBEDCZTPA8T0mX5PN5NWBeCtrCJJPvnjXUck6y66zazXkF3/PWX5gaQFTeIHQLtB78c6ZhG8t2KNfq+MGIKArQDUBLiJMJpWKZO7ffYLgS0AhW8ScjKuVFDFLGybtoUwimTYJBn2IpT7FU5+HOHpfWVrH1FD+Bw8MWBglaEhEmEdE0oFguMRp0SY+frzaq5BydJ69d4xt/+PsUSzXqlQqtdp+Hu1tEoQl6iGOcsGlMNAw0THTK6JTTBIyIjeIq393e5ChOWV8oUG0UWXEKVMpNdCPGSno8+exPMGw/YLD77vEFmMdy6vh2jmFkEganOz+1NNskpNp9SfRMyq8Zs/heN9CTk3T39EV38thFp5fFYhFd1+l2u8eflarJUBL5y01p2zYPHjwgn8/T6/UA1M0qBtm2bUXZkygfODWHNduVCqg0XTBo4fE/ePBAHSOgIn8x/FJIzho0cVriWGq1mmpaW1hY4OrVqzQaDVUc1HWdp59+mtFoxMOHD0nTVBklMWDZWcDzBuks+Gc+wp9//izjf9EOQWAckb+AkxGf80uel2hYaJaapinWkzhPmSEAqNdIAx+ghrrIHkoRGU4kmrMwo0BtYvyzDlfOtThMgYQEchRnPhqNTjUTSnG6Wq2qjmEhJ4jTOovB9cP+LytbEM6+9qz7cp4++mddj4UDMKwcgXmdsPYkaftttDCPWygyGY7wvRA0H1KL8ahHOW/QabfwJi26Q4dyPodOgOPk0e0K5UKecDplubFIztWJw4hLK9cJ0EhinfF+h6P9B7T7Axy7zPNP3SBNNYhHdPpTcpqOaQY8fLRPohsMd1NeePFZXv/udzHR+NYb71ByS1SLBqOOR6LPjGxRcyABS7dwSKkaDhXboVIp0QgtNl54hf+n9ZCfXl/j0jNXqZnl2cU26pLuHeCPJyw0VwkHB4RpgGW56AWDSRwzG+yio6ki7YkRmEFC8n8Z8SgRa6qw5UTTSY6vo9PQRvbiung1UJFVFmx0MBgo6EP0bqR1X3jzUvSTG12i/TRNWVpaUpisOAEZyiKDxB3HUV3FgglL16c0X3U6HarVqhoNeO/ePWX4JdLMRrVimOR4ZArVU089Rb/f56mnnlI6PlK8FOMjFNAoinAcB8dxThXAz0r952Ug5usD881g85DVR5nlCU1WdHNE1TSbfQjUItF+pVJRNYOsfpAMXBcYRQyb6CmJEqgECnBCwZQ+EmGRiUEGlHSzBAaapilYSTIq+V2WCMjJ8CHp9G40GmqIkTjxWq12qgcFUBBQluIqa57CKWse35+nisr6UZ3Ij7seCwcAGqFuYDSf5yjUWR+/S7e9D0aCNx0SB31CIwdxROAZ1GsOj7bvsma6aGmIaTgU8za6bZJGAesrDdJkhKkbGDkDXU8pF5cZ9fcZTI5IkwDHzOOPoNsdY5km5XKdZiVHEKZcuvIc5tYBh0djFjbG9Pa3uVSu0DpssaBBHIZE4ZSG08B2c6CbJGFK3i1g6hY508b0Qpq5EiuVJgv5PIGpYacHlNcuoxsFQgOiwEcbDvCtHXa3ttCSMbpRxNYDTNvCxSQwdHQtJdUjwP5Tz+R5688L9plf0tkpMIhMSMpGc7LK5TI7OzvU63V1M4gjECMqjxuGcYrGmR0B2Ol0FNde6KTdblcJubXbbRqNhsom9vf3FWYtuHK2FV+YHAIb1et1arWaohV++9vfZnFxkXK5rIyK7/v0ej0ODw9VB7FAFvJZWajkx1nzWcK/jr2V8y5jOwU3l72RJUZdKLZZ9o/UcAqFArquq7qIZAtCAz48PFSNgNJLkdXVEQhRitFZjSEJOADF9c8WYpMkUY/JkgYu2Uthdbmuq45VvqsUueHECUt2l/2c86C7bCR/VgYg7yvPy7qobP2xcABRakEaklorGOsVetsRhXAbP0nRnTJ+OMFOdXTLwPfbaJaLa8Kos4NraxQLFroWkfgBOcdh1D+kUa+gGxqabjGZQmQExJpOgobuNtl5tMVwGFNaWqNc1Gnd/oCC45B3Hbb2Drh95y6hHzCaGpQjl2LkMG6HXHZXCYw8w8DHLq1gWjboJuOxR9ktk7dy5ApVchEsuCVyrkuz2cB04IVhj3KlwVOLRVzb4LCzi5/0CPoRZtpjNJ5gWSappqFbBXyzRBC7oFlYpASZmz2JT3cFZjV9TqLE+MxU8azHPgojIhezYRgsLi7SbrdVxCN4qURV0gNQqVROUf+yEeFkMjmlHClRnNBKXdfl6OgIz/O4c+cOCwsLajKUiInt7u6q/gTBiYMgoFab1VpEmVOygOl0qphJIm1RKpWoVqtqstiDBw9UUdR1XTWMXDKPrC6MGIZsBJ/F+LPMlLN6AOBE4uFPMxzy2o9i5XI5lpaW6PV6HB0dqelbcgzSYCVSDWk600ISVozsvRj5s8YwymjJNJ1Jg8gQoXK5rDrHgVP1Gik0iyxDEASnPvOE/aaf6s6Vx9I0VZH8cDjkypUrlEol1TMgNSdxJrKf2cE+8r7ZDDL78zyYL8sMyu5lti/krL/7MOuxcADyVZM0QrPyeKuvYLS+hxkOSJwQCwc9GZFoHSDEHxhcubLIo6MWrm1gaT5GpBFpBgY6juHie0Mmfkyu3CRBo2BZuLkFgukEb7jLzZvXeOfdO3z3zQ8YeD5PPneVqw2b1uEef/C9hEsLi9w+2CIXa+i2zRWnRK5ewbCXGEcazWqOwHEplOtMY41GNcVIoGi7VPJlXN0k5414auUJFqtVSvUKn771LN8evs7E+y72tIqtg+dreN4hcRBg6gZhHGFbeVKjRD8wGYY201DDsFIIfHRjNtfXYmbgZ+yf47GO6az4rC6O4wtaA1IpFMNMDVQoaZFcTBeL/8uSY5G0WaYlyU0rqbkYcE3TFGwijUVJkihnII1jEuUJJi9dvEtLSxwcHLC/v0+73WZ5eZmjoyNc1+Wdd95RzkKM//r6uuKhS+qeJIkaXiJaLo7jUCqV1EyC5eVlBQ1cuXJFwRgSwcrvMuJQDIuuz4TPpKg4HyHKzS7fW85hNoKU48xGsfCDheSzROUuYgnDSqQ1Wq2WGnYvxlYKo1K/EcaQBARZlpZlWapHRHB7YejIHkvmlKYpR0dHqttboCKBEyXal0K1BAjCKpO/ke+RPd/y/vL7zs4Ovu9z/fp1JS4nPQICY2aJAuIMsuf7LEM9z/6Zb/yT4zlrXXSg9lg4AFmSEupWAa9+C2fUAs1Htx3S4SHJZErRWmN5I8deu03OgBQLw9DQtQRDD/H9Cb6X4joFCpU6+ZzDcDTFD0aYsYPrVKjU+4zHEStrNdLE484jk3febrNVjTnsjDkMKvS8kINhngIOfq/Pz338JYbjEhQWCAwbLzHAdDCdIrqTZ+IPGXb7XFpcp5SrUS2UWHRMGiWbJ1bX0S0dopC/cnODf/z+txlXTTreiDCakEb6LOo3bex0xlrRmaXBiZ+Qpvrxha2TxDONzxiNVNPPnOV7cnGdrQV/6iLS/nxkgcToC54LsxtQ0m0R9hK9nPkbKYsTC5QiDWIiSCYaMSIf3Wq1eOedd6jX6yRJwtHREZqmnXqfj33sY6e6RbNUwFwup/oX6vW6cgC5XI5ms0mj0VAOyHVd3njjDUzTZDwe4/v+qYEo8n3FeGfPS/bnn8bykZ/nRfsXXcg/7zjEqUnWJlPZZEn0Lw5e+Pdwch4EFtM0Tf2tFNCz/5eGPJEPEfhP8HoZCZmmJ3ODpVksyxySbCtL15RsSmAdkbHWNE0Vu2cNqVNFMZZrIptxi+0C1H6ftx/ZjCC73/NRf3afz8oMLmKvHysHADPDlqCTOg00e7YBxVyDRDdgekgw7jPF5MqNZ7hz78FxihdiOjpJEpPEMbZuYBkwnYyY+gma6dJcWiUIIgpFm+FIp764RqI7hKOAp64NOOgcMo3qbB9jkl7SJ9SmjOMJOhq1whJ2Usawy8R2ntiZtfLbhQqWW8TTG1grOjY6FbdEpVJlvVogjodYpo5rG2hhhFFpontHWEULO7aIsElIieKUJE0oF8oUXZcYh+44Ikk0QD++4BzSY1JnLMaAFC0j+xxn2D5omUgizRSXtAyU9BHjx/ORTLZjViIpz/MUjW5xcZHDw0NVJMzOEMiyQYQuKhovEiXWajVlXATLD4KAra0tLMtSXcHyeULjk+MSHrlATcI8EoG6SqVCuVzGcRwVhUr20mq1qNfrp76vGAWRRk7TVLFK5Htlb/KzZBvmC7xZCGn+fbLslvP24MOu+QhWaisy9EWme4kTkD2Q8ylGX4r3YoCzCpqAcsBnRcyi7Cq9AlnMXvZe3luYYVLAlfMsw4YEGspKegvFeGFhgbW1NVWLEE0peQ/JZLNU2LOM9VnrR4Fh5X3mncV5r/9x12PhACI09BT0YzFjXZvBHJFexi6W8eIYPTclLqdUzQcEScjOUQ/bKQITojjFC1MqxQppEmIQkmgJSRygJxoL1SrRJKCYd+l0W1juAv1hSBQW0At59FGXS4UKd9qHFKyUdveI1LIwQ41Ih45lUA4TnFyZRmUBPZdnqOlEsYZTbxBbLoZmkeR0tCBgfWUZJ4WCbmA0VuhtHrBeq8PAh8EhR+9sk9/wGbkFooJLEJoYhkPRLTE8bisvuBYFx+LIT/CiY/wynRmHWVfvCQZspDN0R0shPnXNZTIEifQ1jTQlowWkKYMSX3DwmKXYZR+TCE46QyVVl5RauPvy/eQ1Ymwl7c/OGBasXqJC+b3ZbNJqtSgUCgrHnZ2Gk+hNxL5EblgYRkJtbDabCvsXJ7GwsECv11NCYqVSSUEGEvXLcYohE4aSRMZnDf3IwlDZdRaDRP4vRisLG/1pUMKHWfP9EXIeZe6BaCEJndK2bTWVTWox4rSzciVC1cx20QqTK1tDkcBhPnvKMoDgZMymSEjL+c4eqxSjRQJcfpdsUtM07t69qwq+2exBPjsrTZJ10llo58d1CPOF6o8qs3ssHEB2nVvQzF/CTAxSPcKa7OD7QwwMTMvFci3iFDw/xdA0IjRc18F1bOJ4xt1OGNHvHlIuFCimFoM0JJ9oeNM2+WaeJNS4bM2ax1w9puX7kLj4SURqGSwtLTANC5R1mzg1MHM5cHMYpQpaoYDj5plMx3TGI8LRhDiKKdbKTO/v8cRzt4je/gDT9UkDB23RYS84wMxdg6AKRoRuuCRYVAo2VpqipQlpnKLHMwNvpBCf062bMDPuP86t/ucBFZy3soZKUn7pJpXCWrZLU6J24BTvWpyBNBHJdxKNf9GUl9e2220Gg8Gp6VKiVy+wUi6XU8ckhlqyACkACrW1Xq9zcHCAZVkcHh5SLpdP0UglK5FjymL38KNB86NBAAAgAElEQVQpOv6oxiO7PupGMPmMs4ydYOGWZVGpVNS5yA6BgRPKpGD0WYE40Y3KOjHJCKXAK9G+XCOizAooVdH9/X11LYkhFXgne7xwYrxlv6Se0O12abfb6j1d11UFfrl+pG6Rdb7zhf6zivbZ/58H1WYdwY977fwo67FwAJqmzcaYxAlkKGSziDQl1SCXxujJlMTrEIcRpmFjGzZuvkQYJ0z9kCjRMbQUHR8nnyMIAlJdoz3oYho+/X6XSSFHPlfFNm2KFRvKVfwwoNsdUy/lcJ0iFn2KfsJRF8bTiDhK+c50hy+uPoEdNIgrZYJGlf5oQmllmYEfkaYxzVKJahxi2haFUoFGrUqxXIdgiqlF+LGDozVoPPVpjFaHKJ+nHwyxrUUKpSqWWcA1U3QtJUg04jRHaqZYaOhxTBxnNj0L45BynDrNzuMZRUFZs+d+kHnwUUSKP4ohyqbjkh3IxCl5PKtnIyl8EASMx2PVTCaQjEAOwhiRztKVlRU0TVOzB4bDIUEQ8Pbbb/PCCy8oQyRdq1JkFj5/9uazbVuJgMnj4/GY1dVV1YEsx1QoFE4NxsmeazGC85H7PDdc/v2wfc2+70fF/Mkek3zmWceRpYLOF7MFoxfjD6hMSZhhgMoSBG+X7EBqSYCCcKRhK+twRY5jMBgoRyEQnNSNsuc0e4zSpS0wkO/7LCwsqDqEXCtwmrUlgUaW1ZU9T9nzljX6WWdw1vmUv52Hwi5iPR4OAB30E8kCdWK04y+qQaynRIUFTG+ZdBxhaSm6PtOZmQYh48mUQr6K6brkctVZh2+SYugxvV6HZqOAZZgkQUhvcsD6padJNZvQG0I6oFhISLSEw70dGs0l1tw802GLwyOX/Sjh7/zRP+Xf+6WXqNcv4W1F9FdCLj11Ba/joedsJr0RWpxQSFNM3yNOUvb33ufKC09iJhCbBk7B4M13v4N2Y4Vce5N+lCOX2yBXqmPoBjk7R5TEDPyIrgdHscl4OiYiVUY+RS4GneTYeOjaaclfTZNGlBNDkIWJ4IR/HkreoGnEH3HgKDfHvJET6EVeAzO9GcGTBUbJUu4Mw1DDPkQVVNM0FhYWZt/rWCtGMoh+v0+1WqVWq9FqtRR7ZXNzk83NTZ588skZ9FYoKI57FhPO5/NKAljqB9LTYJom7733Hjdu3FDidEIdzUonizTyZDI5JT2s9igT/GSx/mz098OMxfx5zr7PRa7zmC3Z54UFFEWR2jeB9rJwjvSGZB2C1ADE2WeLzoAqxkpBdjQaUa1WVU0BZoJ1N27c4PXXX1evl7qRpmlKwVP2R5y+CNfBzClIJ7rAfdLJnS3oZx2Z1AKyjB55r/P2cB7nnz/P5+35RezrR58r/pjrvC8bYJOYRQKzjG5WiGINy8zj5mq4bpVSeRE/mhImAf3RbFJQGKeEYUQuX6TbH2LaDrlCiUKpwtQfoRMSGhpWqU5sVDBSm0uNIoWwRdC+QxwdUqjH3HnYZWJY/MxX/juiWkj0ZAm3F2OgUa9WiIKA5mKD2mKdSJ+1axVch9Url4gGQ5j6pFEIhRJ/snmX2vITrF+5RalYIZcrkM8VME2LMAroewEDP2UcmSQJpJpxLNR2mrufNfg/zCDI+YyShChJSLVZyTiM49nshX/NS9JuoQbKjZjL5VTXrUT8ovsvEaRI/UqkJswgQGG2UlxcWFhQTkOMh8BBv/mbv6nm0IZhSLlcVnRPGU8oEJFAU2maKk3/YrGo9O6vXr2q9GKkCCoDS0T3aD7Cl+OdLwKfxQ7JPievn484TwcDFw/1iQEXaGM+00vTExqsHFt2tkOv16PX69Htdk9lSrKH8r2EKiv7W6vV1HURx7NJb67rsra2pr6rZICTyYRut8vnPvc51aMg8hACKUodRo5VWEZSmxDYUCa2FQoFdT3K6yQbzM68ECpw9t881TNr8OWzsvua3bvsa+Xfn7WJ8Af28kO/wwWsbJp4Hs0p0V1CPU+SaxLpRWINfN/DMC2cXAEnl6dcaZKkJkEI7f6QIIrpjyf4YYhuuAShRhCCppuMhh38SRstnaJFE/IOJMEQb9RmPBwRj0FP8tTr1zFyNpWxjjcJ+Lf/m79OyRpTefY6OBpGvURzbYHe4SGhN2F5ZYFUS6jkXaI0AG9KOB4ySqZQcPjYX/sCTn6FqVHGth0KuTxhKDdziO3ohJFB39MYelPiFOJUI9GNU8Zn/mf2ovqBc5ckxGkCukZynE2kx5ARnG5A+aj2Vf4/v+QGyHZvStQvhVnpAE7T2RxhGb8nUb98jhge0f4RSMn3fSUpLXCS6LrI637t136NTqfD2tqaKlo2m02CIFAGSjIByTrEkORyOV5++WUF90jfgHw/YZ+IcqZw1uV8Z/cui03PY75nnd/sc/K385nERe+rvG/25/x9K4ZRNHVk1GapVFIOVvaz0+mojl2pw8jeS/YgDrhSqbC0tMTGxgZra2skyWzgzng8VpmV1HgePnzI7u4ur7zyCqVSSRnabOE5a6Cl8CzfRbKDLLwo2Y2wiyTDlMxWnpuHd+QzsnDieRDQj5LpXdS+PhYQ0FkrTVO0THOSmaYkWoqhm2i2SRpFhIHPdNDBtJ3Zv7REFE/Rk5Bi0UDTUhxyTIMAkhDT+P/Ze5NY287rzu/3Nbs57W1fR4mURMkSabFkAbFTrsDw0KgCyoMAQSZBgATxIAMPAo8ysWLNA0/sADFgIEAhmZQmmVWiAFVwEBtGHNuyZBaLFkmJ0tMTX3u70+zmazLYZ+373f3OpWTy0ngwzwIu7mn22c3XrOa/uu58Z4sLZoVivfasTy8wumY8sty9O2E8eYWf/nTFdGJoCTTK87lbc55VkfN6xXemjn/xu/8Z/+Zfv8toNObs4VP2PvNZvrB0RA0+OvZ+6XXqB6fkUWEzw7JZUB7MYFawzgO0gdH8mFXziFpbCjOC2ILyxNgwLvcYOcu6qjbVPSPBBwLh2olPF9qQ+SuleqYf2UQAbUoGqZvnDT+TtkW4pJsjjRKRTZdGcEjUj/gHRJMTLS/G2Ef8CNOYzWY8ePCgDxuU7ORHjx71jPOb3/wmf/iHf8hXvvIVoGOod+7cQWvNfD7vGbzci2SlSolpKXucwhxCEmMufomheZ+OyRAe2Dbn247/h/IBXHcvqZ9D3qelm0U4ytyJRSWCWIR3mh8g1UOlmYy8X61WnJ+fM5/P+5o9QB8YIP/feusttNb8yq/8Cn/6p3/aR40JVCdKglgoKWMvioLbt2+jlOp9EKLlCzwkwh2uWl7AFYE+HLdtDP86gZAKjfTzm5jnF0MAaNW1NImRGDt8G8CHy2YKQW8YgNEoXxNdQAWFMY5RMcPkU3wwlFoxUmOCm1LVK2wxR2uIocIoyIwioyWGmlXw5Ht7lFlgtT5jXLX86N0fsj8fE70jujFZseZzt2d83k44WdS4eskjTvj1//zz/Ns/+mvKvQMwmvjqEQqNXVeQlxSrCyiOQXnMqmAdHc/O32c9fshL0XF/teB0XbN2LXtT0EbhXOhMzVGGV56TJhB8BKXQ2uKC68I6FeiQZoBKtMSGGfax/5dhhhrThwtFpdAhokK8Uj6aeLMdwT4sFHFoxaTWjWjzIgC6Z1RXNp7UeE/rz6TWgDAL2cz3798H6OGDEAIvv/wy+/v7fU2g9XrN7/3e7/EHf/AHHB8fs16vuXPnDmdnZ30N/+Vy2UeSSMs/SWYTzVPKGqSORoGdUsxbnmtb7L98J+Mnxw39J0JDgbANS/6kSK6VFreTORmWYxbnqta6T/CS5xKNX4rFpeeS55AosP39fV577bW+wB/Q1wISBUCEzptvvsmv/uqv8su//Mv85V/+JTHGrU5gWS8CL0q9fwlfFZ+BCDb5ffpMQwf5kNGnn13nD0iPHTp+03PcRLTXCyEAdJAHU7Sbz2KMKG2A7jsXHcq3uPUZY9Vg8xHQoGxGU1WUUZNPD9AavDOs3QIXNK5tiQSMUkzLgqgh+E3ih+6Yq6PF00Lm+cU3XsXoyDvv/ICXXnqJ08rzi6/e4uGTC7786ud57/vv8TSckc0L/uf/7X/gt//7fwWl4vy8q1ODLajrJXaxwOyVnJ2esWfHtKf3efP4HdY//A+8C3xw0XB86x62afFtxWg0Z2I6aKEgcGea8WCluViuN9bQZexOtyiuZiBuw5VVvGQgUW0pM8vNRxVsnd8tTCtd2AKnCNMX7VkceuK4k00oPgB5/jTbM60lI+Sc4+7du+R5zqNHj3pNXn57+/Ztqqri2bNnLJdLfv/3f5/f/d3fRWt9peSAYMviLHbO9UXoTk5O+tIHe3t7PSMSR7CMw97eHuv1+kr7w6HTVijF9rdteBmDlEEOx/aTZv4pbYsOEieqlEqW0Fqx5ESjlmdIs3eBPgoI6K281WrF06dPaZqGPM85ODjAe987aiVhTyyPuq75m7/5G37913+dV199lffee6/PQxG/QFouIs/zPqEvLSUhvQHEqS/KhZT3FiGSjkVKQ+Y+nJtt3w81/21z/HHohRAA19Kmfk0IkTxCiAFbaIyboWKkDSeEuiW34NoaFVbkRYk3mmUbGI9KnK87rc1mLNYXjIqCqCyjbIw2oCO41lGUY1QJ2p1RnX/Aq5/7IuVoTjYpeO+dHzDPRrB8zNFM85n553h88YT/6+zf8d++83f4L75CGSHg0eOc4mBM873vU7UVe2bC6if3+T+qP8NOavbqEx5FOLz9xsY3kWPKAjuakdkRyjnmFtplwJgVmTa0m3BWzSaSBxjqjJcL7tIyyJLv3cAZ9Q9J15mq6QIWvFUEmpjbssnERyAdwtJOYlIKIK24KbCROPBi7DJwpZx00zTE2DWC2dvb4/T0lJdeeomHDx9ycnLCH/3RH/Fbv/VbVyJ9RqMRDx48YDqdXmlTKYLBOdd3rBJGIn8inFLoI20NCZc1dlJKtcRt2qGM77bww/QcN0npfVy3nkRIS7y8JGNVVdW/FzhNYCJRZFIlQBK2xGpKfyvfSb8J8bNIcICcN89zzs/P+ZM/+RN+8zd/k9FoxDvvvNOHEItQkgzvl19+mdVqxaNHj/pINPE3yXMIY06rxqY5BEMGPcT95fU2KG84z9dZ0DdBL4QAUBiiUvgYUKrDKZQCFQNBd5h1HRQ5CtdkNM6jm4ZMFdjJBO9bHIG4WBALx3R2RAj7VHXdCY/csFyeU2YFrdMUpaH2ERUUo8xQjHKaas2yqilNgZ2/BM5DVjIxkS986bPMRmOWtWacaxwOnx3inj7iv/5f/lPKD/b4n/7Hf0379AKtFdmDBXldE374Fn928V3+8sFfMH4153h5DBPLnpmx0opyNsPmJdVqgQ4WFWCvHBP9OfeOCr60Vny/amhjhveKwGW6v9lkAndVQZMEuqjQG9++3+QKRNUJ0h5yCZtQUdgUiutCRmO8WUbxYRhlukmEWYvpL2a+aFXC9CURSxK/0tdihovAEG1TarxLJq/ck5SZTtsFnp+fc3R0xHK55IMPPuAb3/gGv/M7v8N8PieEwOnpKYvFgvv37/Po0SMWi0WvKcr10oiktNWl+CakVeT777/fwwfwfOXPbUxkOH7bxvrDNM+bopSJXSd0xMGa9gkGemw/xnileY/AO/K7tGCczKfkhsg4wWX3LlEA0pr/0ntBwkCdc3z729/mN37jN/jSl77Ew4cPeyGcZVlfrfT73/8+T548oW3bvtS49KSQtSSKhgg6oO8pnFYZHY7Z0N9zXeCGvE9hnyFkdBOC/YUQAEF12n0bO6iml5YBQgS0Jlct2rfkymE2+q8PChcvCzApNG3DRsvoNAQdO6cT4wnr5QK/ajFry61bt7oJjK4TPsoSfYs3lqBynF4TW48lkGca3DnUNdZEgvPMigwOX6KKFfmdyH/1v/8X6JUmrwOfjTmzY40vFxzcuk1529KeVZwEy/26Znq4x/jYENCgNPP9Q2IEa7oU91yPUdHzH33xHkWW89c/PGXh3ZWN5jWEEMEoTF8rSPdu823ahGiK23DJm9YSUxpi0j/resIc4JJhyMYD+kxgib4Qp6K0fRwmbgkJoxHoQEJE27btozwk8Uv8C3/8x3+M1rrv/StW1OHhYd+IXuLW9/f3e4YvIYLC1NLkoS984QuEEHj//fevxL8Px0esob8Pnj/8/qaggm3nTJnZcKy3OX3h0k8A9Fq1WEkyP5IAJoJAtOxU2KSVRCUSx1rbR1+J4BEYUZSJk5MTvvWtb/HVr36Ve/fu9aWeHz9+zJtvvtn7DuR5REmQ5xVBIv4LmdN0zYiw/zBLYDiWz8GzyedDIXAdhPRR6IUQAFF1Wn5UdIXg6PBpExVdQbNI3nhCfUZYvY/yjiy3hGDx3hBRGJsxsmNc6JyCmS1oncOiroRyVcsFOrOs64YChaUTNMYWON/iosVqjfKe82aB0p6RryGuKIxidvc2i2VN244wiyeoOKZRis9EzfTujEXzmP0yoyhHhLrgfPEIU8yJtqReeIq9Y6It0DZnPJmSFSWuqcmLktFoQihArz2TzNLEhs9+fo93H71FU53gkqjdyKVPIGyaw3ev3c9k5sOKlOmi+iToOmYs39V13fsA0jov4khMM0QlKmgYMphmjor2l2K7gkHLtaXKo9zbfD7vG9QIE5EQVHEYppi1WBcSViphhlKHSISFhDOKNivY87179/jpT3/a5y0Mxyv9L/f888zR31fYfhQaQk9DSChdT5IMJgJQtGjBy2OMffkPOY9o8vKdONXTcGEhccxK3SZZGzI/qZNXrEaAv/3bv+V73/velYxeCQWVMUwjy4DeQlVK9b6hNNRZ4Mjz8/O+nIiMizzbh0GwqRM5rVYqz3XdPHwceiEEQGBTV8PrDs5AoaOitRGCQwdPoxosjiI7JNMnxHqTRJQrrBmjVGQZI7ntTPs2BjAaE2BcdiF63kWUKbDW9GVk2+WCosgYjQuUVmS6xVUti+U53teMJyN0MWN9dsr+nTuooJiMZzg0k9mtXpsMAbI8YMMxeVnQtpGGBsMeys6Zze+yrAKRjGJUonEoIllWgM4xRuF9i15HXNOyqD1nVc2qLRmN5+i1I1bLy4UQu0JuIQRcvIxIMBJRxcbclM0ZFURFDJsFGT55rPi686ZmrDC2tKKjbHTRpuGyBHAPgW2OqaqqZyaCHXvvr/RrFQhGwgkFEhBsWJq4z2YzvPd9XwLR6IVJCGadlgOW9ohS/0YojV4SmEAciVI1UxqbDGGBIZ4vjDYdv23QizDebZ/fJA21/qH2KtdPI3yAvjOa+HrSsREID+gFZXot8RGJUBChIlCM/E6uJzkfsibgskicWHFiDSp1WQNIYCkpISKWZuqzkF4AqaUH3ZwfHh72UUPbKB2f4djJOdPPhxb7TdMLIQCG0lEBMXSF3SIKjcIYyK1F1wqUYTwpab2j8Q4XFJGIsRk6yzC5xbtu4fTahorozGB1txDOzrviXrooMGZTUMpYXNvgXSd983yMpuTh2Qnj/BbtyjLNLI3zhNByOB1jdMeoWqXwZKAylnVgtXRAhicyLSacrRzj0QFHt+4SrN4UvQ7gG8pyhlERgkc3awKRxgfqWPC3P/oJ7z9d09Y1aNN5gYHUDaxVtzE61n9pYiul0frS0SSLKWUoH6Zh3BRt00hTRp6W8U3rrYsWlCbwyG8E/klN8Lqu+4qbqeWQwkVpKJ90lfLe98ljstGVUj1cIcxWhIc4cCXmX8IF0w5mqSUhWqlYIm3b8u677/LkyZN+fV5H26I+RNMeRgmJ5jqMuvqkICA59zaISinVa+WizafRMjImMj+pUEmT6GQeJfpHmHLqVxGmn/bmlXPLX5ocJyTCQaxEseZC6BoCpTCTPJuEq8p15LwSIpwqInIumZNtY7YN478ODtpm3X1ceiEEgFBq5op2G31AATZEYrNCh3MsLb6qaduGkE/IbIYxEJSiaT2+qZnMZ72pvl6vcdW6l8pN0y2Oel11jWRM1sNDuTF4H9EatMpYrxusLVDZFK0sjYJlfY7WmmfLTWibyrhYNORlZF2f0wSYzw45v3jGXrnHxckZn/n8IQZDFhzFaIwLEFxLW1VE57BFhm9rFoslrQuYYgSMmB3sc0hOe77kZN0QpN7/lXWguQoKDT+HYa3Qm0gi+Xlom8NqCG3IxoWrWqM4VYVZeO97R3DapEOYu0A+8t9738eGD6GKYVSHXEeKisHVJt/DBu4CVYkQEKEizydRKwJFSJSQMI/5fN7j0/LMw3H6qJv9w3ICboJSyEOukV5PmK6MowgkibpJoZ6UOaZ+AjmH/CaF4KTktwgSwd5F4Iulka6FtN7U0OeSOpbTNo9yDfkT5p8qJHI/xhgmk8lz1pk8Wzq/QxjoOotAvut9olt8Bx+XXgwBEDQxGJT2xKiJgI8BaxRt0KiwJrolRfsUHRsiHmcybLbPeDzrnUBlWeLbmrZtuViuOs0igrYZQY/QedFlbY6ntNWSGH1X2jkvuFgsGOcZPlQoAyrktE3Ee0U5PcBkhsY1eFdgin3qek1sI8/OzphND4jKsFo7jCnINm1tsmKELUccz/Yo8xEhaoLSKDVitn/YhxeGEGiqBcvTJyyrM4pigjaQ2RGm8SzOlizrhhhCV7BNKZTfJE4RNg1husgpj4YQu94AUbKAu6oPYfPeK1Ah0tkhm0WkIHwCpYGuc2TJhhDtMGVaUg9eImlkjKTYl0A0woBkE06nU5bLZc9wRqNRXysovRc5l5QcTiGB9L4mkwlwCUlIxIm0iRSNX0x3CU0UIQX0uQFSQC5ldovFooewtmmEQ6gsfZ3SEPrZxkRukrbdX/qdMH+BamTexPpK6+rLWhB/jkBsEuYbY+yFq2jpaYRQGimUWm1yTL+/NkIDnhcwQnJ/aT8BGVcJBxbLT56hruv+Poe+jiHz3iaM0znbxtSv8xnc1Jy+EAJANmCIXaarLCIfum5X0Vfk7oxSBTIzRhcFRTknqhJUh8llSlP5AFjK8RHenV8x/8piowkaS72uyMsRVhtsplHaoXWOcx6FQpERYpdRq7SmC0C1lEVJ3azxDrQqQbfM5ofkednF9CvFar1mOprRNjAe7aGwtG1Ea8tksk8+nuK8wjlPnhcopQlhyXp1xnp1jo8eHwImBM5rj8q6FoRV09DGSKRbVIZLRuBU7C2CGGxX4keB4bJUAnHAjDfjLr/7JCyCoTNzyOTESSdzJBEXshlE8xPLTTDYtLuUMOa6rlmv1885bNMkIrhsPCIanjAKuUfR/uR7ESCp9j6dTntntNS6EXxaNqwwB6lbJOcWTVgEiFgBQy16SOnYpRCPCLQUJhge/0kJgOHr9L30aZAIINGeU+hKKdX3gEgxf9n/MjcisFOISxi6jMe2exIBIWOTRiDJeUV5kLGSsFD5XHD+VKiL5bJYLPq1JGHAIlREEKSMPY1OG+6Nj6Ll/6NxAsMmPEyFpNzxZgF7R6ECZW4ozZRyNMfoEUEFmtBiURAiJlMEC2VWgovoGIieS5wQT1QtaMtoMsUaaKu61xrG44LF+oLMKryPuKBwoStLEYMheEVR5CxXF6hNilXAEwNkyhBwGG1QxmJNiSdSFlMsEZuNyPMCF2FSlhTFlHJc0LYVdRNwRJqoGM0PyI3phEbMObtoePj0jMWqQrPRBuKHq+lRgQuh67Cmntcmriy8brAv398wpcxnyOBk88nGkLj84e8lCkMYrmy4tMuTaGwSmSFwgDh0pY2faIKQ1EgKoU8cSu85jUpJYQfgSqE6wful8mfadlISiKSMsGi7y+Wyr4QpOQzXVXcdMvKhQ3h4jPwffnaTtM2qS+9D5iTV+sUvkzI1mQthruJ7kedMs4BTR62MeZo7IZ+L0pdCMOI3kPUk1kTqG5M5lrEVp7SsmbQjXdrVTK4XQuhblEo/gdSHdN1cpGt+iPMPfXc3DeXBCyIAQlQoAyEMWqjhMCqgQiAzmryYkdmM4FoUHh0gZhYdoTCWsdqYZBpG8xnNasnF4oTgHdNygtUab3NsBu16SVEYiB5rMurao1G4NrCuWqKLG4xPQ3CoUNBUXaNpozVaW5rWkeclm7glYtBMxvtom6NVQ6YsWWYYz/c65j+dYWyONgbvItPJHIfGhZaDwzs0jcO5iugDGsN5vaD2kYvGQ1sTsBuBFAhaX2rvGw2rGzyH0uBD6FpsCuQRNxtUKWJoCUSU7lpx9trJDa+vIfPfBl2k9dXTY2RTpu0TBbapqorz83NijD3TEM2/ruteU0+tDMkXgKvYdYrxCiwhviPZ3HAZhSIRRMLU5E/uE+gTzqbTaV9RNHV+imUw7Gw13OTD0M9tDGA4pumYfxLMX+5jm7CR93JPk8mkhzkldl6YolhPwBUYRX4j/hUpqSFQmwgRYc7CfNNxSKHGlPmmWrj8Vixkl+yhFHaCxNJOon/kfqQpTQiBxWLRWznbNP90jNL7vG5st1kD1/nSPiq9EAJguFj7qns+EK2hajStygjR0TZLtIrYzJLnYyqtyYqctm4I7QXWluTZFE8EC01zinY1jc4gBMZWQ54TmgqtOmfzcnlBiJ5qsSIvbMekbZfAYvOcynnKSUlUoJxjva7Jc3AtGO0piwmtC+R5iXddTsP+3m2WywXF/A51E9if7xGaNd52YWM+6q6uyHiKLWcENLYosdmkiwiKjnt6xE9OFywbz8XCU7XNlYW1zdyX/0opvLs0gbVKYAMsXeYvSDnQbWGFNzGvwzlOF7JoY2n4XlpXPc/z3pmqte7r74iZnTJO0Q4lCkMSw2KMvWYnG1zOJ78TE142t4ynOPkEUpLa/+JfkGNSTV+uJ34KEWTyvCEE7t69y7Nnz/oOU8O5+7BxHEb4DNdCOtbC6LZFwHwcuk4bTYWp3Ctc1syRtSiYv5TjkPGNMfZF44TJp2Uz5JxpvZ00dDIdm3RtpXkv6TEp3CQ+RLknySUQJ7/cI9AngIlTWRzVqUBIQ5jlOtfBZcDE9JsAACAASURBVOk+3ja2KWSW/u4m6IUQACmlC9YoaJ1H6ZzGVSybCzJ/Tp5rnLcoFdDFhBg9eVSo4rDDCmkwPuCVopgcdjCQVsRqxeL8jHHWJetUywXPnj2jLHNc68hGE6LyrNdLpkVB0zrKkaJuHC5GvI9Ym+NcJLMdBKEwWJtTFEA01PUaO8pxMWPv6AhquPPKZ/EmIyss2hQ4VWCN6jFQ3TTkeUlZjFGTnKZuyZhyeBT4J7/wCqeLdzm/0FsXkZBs9mHb4J6xX/n8MmtR609OU5T72vY+xebTWO90o4qpn34ujCFNsJKibNZaZrNZXy44De2T8SmKoi/oJUw71QIlDFV8EgI1CIadhnoeHR31lsIwgUi0QYk+kWOgK2736quv9qUl5LmGQkA+S7OI5fvr1oFovcK0PgnfzlBLHQooYdLy/ClMJ8+S+nXk2aqq6uPvhdkKcxaYEOhx+nTtpJp9Wrd/eM/peAwFkggBqSMkDD1NIEszkyFRVjfzlFZ6TZ3I2+hnafTDcd4mMD4uvRACwKfhizoSYqCremyAgFaeJjbo1RmufUStc7Sdk08146xkurePC+CbJaGt8ZVC6QytS4pxsSne9RijNbPJHK096/WKtnHs7R9u4ISMiKbIx4SQU/uWYjTD6AKrPOuqoTQRZfVGu4uUWQ7a4OgyAy/Ol5RlTmEnxBAo7D62cKzrhsN7dyHRQJXKwWhGRY6Km0iFtsLajCLP0RHaFgqbMSktxmiU830CV+cP2DAMUufSpSavSBZR2PwBPrQoHVE6XHEpBHezYUDbcP/+3rms3S5hkMaYXsOWvr7iTN2W8CVOVIELpOyA1AcSJqO17n0GYkGkGrlE+Ug5Atm4xpg+MkVq/ocQ+ubvSikmk8kVX0aqtQI9hixaoVxvNBr1NYPSXIChn2YIW8D1iVfp67TG0LZSEzc5r9dpuhKdl0InabJfahmJVSbCUrR3ceynMJIkDQ4todSyk2PkHtMxTP0HqYUmmrwoEWlET6qwiHCR84iFkwYViMNf7u06v8k2f498Lt9tC7e9KXoxBMBGAncLyKLURjNUgDK4qACD8xUmBMrxhNnsmNFkRlSOdn2BMmVfD2Q0GtE2gbZtyAuFUjW51WByYu5Y1y1Ka8rJuJtoFNoYsqygcY6gNCEqrLHUzqPQOLfJLNZdmFiIEa0NJh+htKFxHoxhNtunqhomkxnr9ZrRrCDTsFycMJ7MyEdjTMzJyq62TFVVhFj3sIKv1+gsQ2Ulo2lB7WpuHU754QePWG8x8wF8bJ/bhCGELsxzC1zQHbuBfrgeergpGi769F5Fc5LnH41GvdM0xsusT9HABWJJk72E6UijFdEAU8xftHqJ5hGGIY1GhselZQqg09qlD8FyueTWrVt9qKJYIuk9ClOQ55XjxFE8mUw4Ojrigw8+uDKXKRSXzkk6j9sEwfD4bb+7aZIx3HYPKW4uDFhgPBkfYbhwmVQl8ynjIJ3DxCEsQnroDB9ajinzT30paZSWUqrP5I8x9tVFvfeMx+Peb5RGD6W+njRrPc1XkDDW1FKQZxLFYgjbyb2mMI+8/7Aw4Y9LL4QAuNKKbeOJNHpTNVBFYtSbGv6glGHZXFA9i+inj4lxzWRyyN7hS8xmM1bLLu5aBYVSkcwYYliRZ5rWQ+NasiLnYr1iOi5ZPjulHHUhojbLQWnqZkmWF7imRaOIrScfZTRNtcF+O/x+NCkJEXyEzGb4dYMylul0o0najGZdkZkVNoAeT8iNRZdTLuo11it08Ch7Wf1yVChslqFtDrpgf88yzp8wL8dcVOdXNtglVq2SBX8VW7zEybfXkgmSKfzJVIG4QmmERpoBLAy8rmtOT085OzvrNfzpdNrDNWlhL3G8iSNZcH757unTp/3GFBhCFARhSkKy4cVvkEarCKOZTCZXMOOnT592621TKTKtRjn0IaSQjDisheFMp9PeVyFzdmV+EifmNg0x1Szl82HUyU1ixkLbtNn0PlLLI8XShZkLrJMyVImKgqt+mnTNpL4jeU7JJBbBv80JPBwjEfSihInFIPeaVnOVz1MLTp4tTWwTJSSE0K+XYYiqXPvngXSGY5ze/03N6QshALyPKNVJRaUvH9JHDRFsNCi1xipDZnLqqPGxBQ37hy+hteVicUpcAGiszVg6xWS0qdGTZZyennUOxk19/YODQx4/fozWmtFoyvnZmskk0Vx8wG42avAtwdes1ysOj47Jy8BiucZkJcpDaUt0OWYcLFrDZO+YtvVMJnNcvcD7btLvv/8es/0jDm6/hM025RtMV+oiz3N0nqGBLMsJWpOPcrzL+OVf/joutHzw/32f2rUYGnzMupwFpQghCrqDoSuhqkLs0sMUm+J6CdMggZISaOimo4BkHoWG2kwa3ibMUj5PO2it1+t+I4n2L7HjwyzOyWTSb8LxeMx6vWY6nV4RhqlWLJbCbDbr/QMiqFIGJYlpwjSkBaTAG0dHR+zt7fUMI3UcpucQh7Mxhl/6pV/i9PSUp0+fPodPD2mb1pc6gFNBkDo6b5JZpJQKw/S+0muJoBU8vWmaPjt7Npv1Y5f6asTaE18MXJZzGY1Gzznqhfmna2uI/w8hNLiaFyL3J9cXyE6awIulmFoCKaXlSKy1XFxccHZ2xnw+7+d+OLep4vNhGr18v23e/9H4AFKK4RKzgzSky6BMhi1mlPkY70PniF2f0QSLsgXTg1vEqKjWjsmkIDNgTFfHfX//oJPWdI7cx48fo7RF5zlNiIzne2ANTVWj84K2dkSvyLKccqSxWcb5+QplCnys8IDflKu2WYE2GcZkNHUHUbFumMzmnOuudHBVVejTDzC+xS1PcCpnPJ2h8xFaZXTtGA2T2RQfFMYUhLZrVhOc45U7t9mb/piHJw2tD9j8MpMy3Xw+XjJzHRNMOT4faeK9x/DJVQJNC4Gl2nRKKfOX76Rt4/n5eR8mKppfGjIqSVrC8EajUe9TkOME3kkdh0MnoXw31DTFLyCOPoEF9vf3aduW27dvs1wuryQ8pVmiAjWJ36KH+ZLiZ1/84hd58OABjx8//pnjmcIG2+bsOgZ105ReO41QSZmZjKdE1YjWLiGykgcheL/seRGyaZVUsZbSBi4yJyI85JoiSFJo6kpgSRIRlPpdlFK9MKrruo9GSmEc4EpEWRr1lFp9BwcHPRyZKjnDvZr+vw7O2eYjuM5a/Cj0QgiAqw8i9Ws0Ur8mxohuL8iVhxio6y5pp6oqJoWhnMyxk338ptXjeDLG4zE6UtfrPtHHGIMPniYYism8YygxcHp6zmg0ZrVe4XyX/OVDBGXQwWC1IkSFNjlKW+o6oE2GNhmta0Eb1uuayXjKerUEbVE2cr5YMto7xKmM8V6n9ZycPEWvHcZ6ghuBBWMNWlvGoynOB9A5RTGmQmMLh19eULcVhkCZ5VThsnGKwDdDZ19MxrbzB3z42H8SQmC40dLryEYVsz912kk5h8lk0mPGQB/rL5EhsqlSoSKRHEqpHp4R7U7qBwnTSRmWMGo5X7rJpOLneDzunZAitO7evctyuWS9XjMej3utdTKZ9MImLV6WFj4ThiZCIw2LFEqZmtxPqvkPx3U43p8EpfeQjqF8Jwx1WPZBBMIwAki0frGQ0jr7cn6xHraVgUid+vIbYfRpWGh6fOoEFpIck8lkQtu2PHv2jNlsdsWBL+caCroQQg9tidIikUXbtHihoT/nw2C1dDxugvkD1/KFf3DqGdGmtHFE42Og9S1ZXFIojzIWHyB6j29bikwT9YhyMmVU5JApdJ7R4sgMECNR5eTlHqYoCFqzrDaahikwOsfqDIUlsMH8spI2GOrouzIQShGsxUdFWYxxOsNnUxQFwXeF44xRFNYwmY4pRiVRd5vd1V2rydl8n7pqYTRnPjtiPJtiR1O80ozGE8ykJJuMWNcVyhRkWUHrWwqjKbKcyWyflz//C10fAx+w+pLpKaVQUaOi7hq/Yy//tO36KyiD0xqnVNcdLBlvTySo7v9NLSqh1PRNNb3hRk03uGxySbBKi2/J8cIQBatN8wIkRFS0fMF4ZQOnTEuYjIQXyucSLipMKbU6jDGcn5/3/SXquubo6KjPBJZIlqIomEwmfRertLBdnudMJhPm8zkvvfRSDz3IPaRMKWUQ2/5+Hvok5nUb80+tOdHM0ygv6fsgUV7idE2FpMxjymQFZ0+TygQuHIZ1pgJCGLy8TsdSjpPfwVWfjTSel99LFFr6/CLggD4xUBSZJ0+e8OjRo+e09RSyk/WYvt52zHDct439R6UXwwJApN/mA/EF666ev25aLBB9AJWhjMEqhbaWYu8WTucsLlaMMk10DWU2QsfAqqnQ1uBCi7UZbV1Tjido1RVVq+saqzTlZErTevJygs0KHBX14oLpOCMfj/HtGpsXBOdofdxo/xayrMPcbUbTrEAbxtM9NIasyMnzKeuzBdqDMZb1xSlutUKZCcVkhsryLoGssIBmNtvragrpgC0uGZ8syK+99lUe//lfU689XkfMZuEGupaO2mhIrAAXRJhuGfPBAhtCMzdNqRmefib/U4Em4aDWWhaLRQ+hpGF3qUkvhbpkQ0jDdYGSBItPww1F20yFUnqNtFSwaKnQWSEXFxc90zbG9DX9hUmllokIkNRySJ2ZBwcHvP766zx58uSKkzulocY3dPIO6WdBRR+X0uuLYE7XUqrNCkNP70csuRjjFasJLpvCC8OWhKxtUIn8Ln3GYVRSyuzTcU3vSyKL6rruMX/xIUm0kjx3uk5lTaSO/nR+JRdleI9DH9g2SoXsNufvPyofgFeJt987YlAEBTpGNA3ardGxRmuwRUnUZe8IvDg7I7MKXMuJa1DKcHhwjPeR2XTMOjhcDBAgKzZOpFD3WJ6PCqxFK0OOZVk3YAzT2T5tUEQM5XhKdC3FaEJQhlGZU+VLosrICk0bAsZaXIjk2YQQFHUTGM1K3MkTqsoxOdhj8WxJrm3XgjJAbnLK2Qxi18FstayYzCcodckoJbrBGMPrv/AZ/t/v/BWLtUcr28FUAEYRI7TB0xk+m8+1IsQur0LFrqx2COEyf2AAJ3xS8eJyjeH5ZXOI9iT4rzhmRWgsl0ustX1vXgm7TDVDYUCp1ifHpJmZ6X/RIoUBCBQlTEgwfaDX7Ky1HB4e8vTpU/b396+UA04dkyJggB5WEP9CKoSKouCVV16hKArW6/VWB9/QeT1kCtv+p8fftAUg5x8ytfQzuecU2rPW9p2y5Dhh8CFcVuxMa+ikvQGEYaeKRBqjn/qbUqhRzpXCpBJmLNdKaziVZdlbK2mUj9yvXCe1QlLISt5LoUKZ+w+DeT7s821r4qYE+wshALQKRGLnAdYWYsQqMMpjQsAWBl1Dpg1FMcXkGd5HggvMpnus10/JM0NmLyML6raBSpOPxoyyguA6J51rVgQ0xWROff6M4BzeeUJUkBfkURGqitlkSogenSkKm7OqHHk5xZqScrzHGY/JygKrwCpNazRB5XirUHqEMQqjNMXsiNX5ow4WmM175jWe7mEKC1Ezmsxxft31MNAWlMJoQ9vWVyZ6f77HV3/hyyy+8zZ1W+O7IKmuyXuMXQtNuh7LEbBe6usolL7sShXxWFPgg8Z24A8xRvYP3rrxuR0KgXSxC34KlyUc0gJgQwebROgIYxDGLUJCzivXSRmtwAaTyaTX0oQ5yWuZG4EkpA5NWoRM7ld6yR4dHV0pXVGWZQ8BwaVwkxh2ga+EORtjODo64stf/jLf+c53+vDIoRY/xPxTmGDI7OU4YXhDy+vjUtogZRjqKIJeLLXUsvLec3Z21s+b9/6KX0esuTQfAOjXhERiiSBIfQ3DGPvUJyBCI4Uh5T7F5yDhn4vF4kpJj1TrT8tJS4hx+vyynlOLY71e95FrQtdh/NcJ1NRaTz9PM5Q/KqlPQjvY0Y52tKMdvfj0wjiBd7SjHe1oR/+wtBMAO9rRjnb0KaWdANjRjna0o08p7QTAjna0ox19SmknAHa0ox3t6FNKOwGwox3taEefUtoJgB3taEc7+pTSTgDsaEc72tGnlHYCYEc72tGOPqW0EwA72tGOdvQppZ0A2NGOdrSjTyntBMCOdrSjHX1KaScAdrSjHe3oU0o7AbCjHe1oR59S2gmAHe1oRzv6lNJOAOxoRzva0aeUdgJgRzva0Y4+pbQTADva0Y529CmlnQDY0Y52tKNPKb0QTeH/u//mv4wxds2yVYRIIAYg+L5hcgyuayTdNjRNQ+M8ddOwWFdUVcX54gwXoHZQR0PEEqKiKAqccxzcuoOPhiIvCSgm4xl5XlLk464JuNWbRtbtpqmzQZHRuhVFmbE/trz2ubuMbNccWmUF0VisAhUbLi7O+Df/57dZ1QGmd8nLEfODu3hylNJYa4jq+WeXRtbS9FoaWmutMXp7c2jfLok+gHPYpiZrVmjXULZrrF9j2hUGsKEm9ytQnhAc0deoELvfevB4fAx4F2m8w0f4/e882HKXH41++7d/O0qzcuBKc2uZV2lU3zQNbdvSti3r9Zrlckld1ywWi/57+U0IoW+wfvfuXdbrNVmWUZYlo9GI0WhEURR9E3FjTN88Pm2iPh6PKcuSz3/+84xGo75ZvDRR11rz7NkzvvWtb5HnOaPRiOl0yt7eXn8+aRg+bOgtv0/fp43DpZF4Oq/Ouf5PxqVt2ytjNRzLtMm8/Ml7aaYeY+Tb3/72jc3rN7/5zWsbiQ+bnKc9x9PG8UA/LzJOQnmes1wu+/lLn1soXUfpedNG8tKgXeYT6H9zdnaG955bt26RZRmyTp1z/f3JfaXr9bpn+TAank/uU/62UXrt9DzD633jG9/4WPP6QgiAboI2iyVEwBBUQGlN2AiBGC1oh7KWECDQ4rwn04Z2M8nBe4zSmBBw0aMBowui0pw8fcZ4skdoPeV4jPce7z3ONx1D32zO6WyfulljTQ5Y9g8mnJw+5vDgiOlkhN4IImJEhYgyCmtzxuMp//Q//mf823/3f9OsFxircXWFGeegFGhFDKG/TsoUZIHK/55RqOcXSrcACoJyxBCJSoPKiCrQEIgxALG7lo8EF/G0hOAI3qMIKK+IHiIR7wOtC0SlIAxn5uORCLR04Xrv0Vo/t6myLOuPM8aQZRnee/I8p6oqtNY9U5SxMMZwenrK8fExq9UKoGeezrkrTLYsy/5a6UaczWaMx+Oe0aT3YIxhf3+f119/nTfffBOAsiyp65qiKPpzySYdzmt6n1fmdXP99Ph0jISRy/Hy3MLw0+NlHQ8Fq3PuijD4hyJhbul1r2OW3vsrwlaEgXOO+XzOxcVFPwZCw2eRcYox9r8VAQ9cEfrQrUlZG03T9MfIOUQoyf2m87JtrrbRUPD1SuzgPB9GwzUl4/nz/PbvQy+EAOgmWBOjR6lEkocNM4uRECIqGpQGrbuFYo3BGEWmFVYbolVUVYOOGoMjollenFOWY+bTGQdHhzx9cgIhEIPr/nzHeNAdky7HE3x0qKiAyGQyoWlXHB3sU5Yl7XoJobNUiB7vI9ZkTGd7vPSSwliFb5bgCoJvMN4RdSSoiPexn9ChBpjnOc45rLWXGiKhP0ZrnTCnDDwE5YlqY1koCESi/I8Bs2EkfjN+wfuN9h8gKLSBsDFLnAv4G+YTKaNNN03K6NINLptPtHbRsK21/WaV38tGt9Zyfn5OWZZXtOBUO9RaUxQFTXNV2GdZxq1bt7o5TiyM9PyTyYQvf/nLvP3227Rt2zNWYV7Ouf7eh8xqG+MfWgXCoIT5pN+lz7tNQMh9pJZCeozc2zYN+uNSqsVuY3bD74YMM7XEhPmLJSzMeTabcXZ2Rp7nzwkKuYa19opQsNZS13W/jlJK995oNKJtW6qqoiiK/trpOWV9poqBXHfb86b3MVTwhutfxmZoOQ7nPhUEqVUwtJo+Kr0QAkAmN0bdwz4xKpTylwMVN5I1dBvF0mk/mbWELKPMcrQOOOepW99ZEjqgtIXgWC8WBBeZzvaoqor5fE7btOhigqIbVNE6M2vJbUFoHWWuuXU442g2QRPIjCX6gNVQtw02Myg0ZTnB+8Dx4SGrnz7ArQ2+mGJsASYnkBOCwhhNluXPCQBQ5HlxZZGmU6zoBFL3124WqQdv0dFCdGibg+o+Uyiid/i4YRbO40Mk+o0wCJHgNkwk0B3nf7Y5+9Hm9XlzXRhUuujFZBdhmDIx51wvBGSzyab13lOWJavVqoeGUlglz3OgszKEKQics7+/32v/6YYX4VMUBXfv3mVvb4/Hjx9TVVV/PmFMAkmJcJH5k42aQj6p1i/PMhwzESbCuOV1ysiHQkDGWJ4j/fymBcBQy0+ZWQpppccOXw+PE0tHng2gaRomkwnr9foK40/HLR1j+Y28F6tSFKt0XKy1ZFnGYrFgPp+jlOrXjggQgLqur0B98hzD+xALJP1seMxwDNNnFQUv/U26N1Kmvw0e+qj0QggAa3JQG/M1mMuB8IZoNotbdXCQ95rIhnlGiN6hYsCVJdaJ5lehncMT0CZDxUgInqZa09iMX3z9q/zk4SNiVBC6jaWdwZuIJqKNIbiaSVFyMC0pyjHzSUlbr4kbOKFtW4xSFNaQlyPaxjMeT/lP/tk/5Yf/67/Ch8hZAxNvyUdzSizlZqGlWH8KAT3HLJIxugKXKDBG4zODIcNgUSojxgxLi84sOigUFlRB1kTa0G0EHwPeR1zjaaPHhYD3AbTCfQIQkNx7utnFBBcGnpq28l8Yv3wn/+u6vnKNGCNt23J2dsYrr7zC06dPe6Ysf865nqmGECjLkv39fQ4ODpjNZv21iqKgbdsrVkMIgfl8zpe+9CXu37/P48ePaZqG/f195vM5IQRms9kVJiHzJ9ZcagEMtbx0XmVdyHVTbVh+n1odcp6U0Q99CDKGN0nXaa/bYJFtFoL8iWAT5jZkevL8eZ731tvw3DLX8uxiCaWQ3zbtXJQGWSOphQ3dHK5WK4qiuMKEP+w50//D1+nzb3udCukhjChjkz5DKvQ+Dr0QAkAgIHQAleJrqtN5EwsAIIYAG6bpXLbR3h1KOYo2w+ceiOgQcBGiCigC1mgg8O/f/B5N1Bwf36FpGkxWXmpQzjEqNGjF4cGMo8N9tOk0wjZchXA0l1prlo9pmxWj0QhLoFqdU5gpsW3IZpq6qigPDvrrpAv+OiahBhozm7GwaoNYGYMJGmM1YLBFgdYerR3RO4wCQ4uJnhgD3hti5/olEGljIMSAo/MVBD4ZCyC9d5nvVHscfg/0GHtqAcgxog0PGe6Pf/xjXn75Zc7Pz2nbtnfuCYMQLX1vb4+7d+8ynU4xxnRrYMPA5V6yLOu1SIDpdArAarXqfEXTKc45RqNRP18CO6SCfTi3H0bpWhDrSMYxZXKCY4uwSteUjNEQDrtJGjLx9P63acfpMddp8WLRpUxea03btoxGoysCYGjVpNaPaPIyDynUJNcSH1MIgbquqeu6hx2VUoxGIy4uLnpLT6xXWbepsPhZcI6sqaHQH85RqhCl1oFcbxhwcFMw0AshAJQVL70BE1CAipGoQwcFxc7ZGUJAWzBWUa8DWoNmhNoMmEAEeWZYLbuNXceIQuPwGFpyHCrPeOO11/nBez8mz3PaekVZ5igC6EhRjFC+4fbtOXvTjMxYTBtQMWAiKKAYl7gYyIsReWFp/Zo8t8SgWS88bdsynaxQ4SnrZSCbf4amlcXjGY0KQnCbRRJRG61e624RohRGRzp/c0RFhcGhYscIbQxY5cltRCtDtBqrNEEXGB2JzQqjPZEClCMz3SK1ISdSUfuADpoumKjtIKAPcWx9FBqarHB18QtTTDdA27aEEBiNRld8A9BBLil0lJIwh8Vi0Z9XhABcMpvxeMydO3c4PDx8zkGolGK8CRAYjUY9AxAGfHJywng8Js9z6rrm5OSk19q3wSzXwT+pEzwVfsI0JPpFmIOMiUS2pAxFmJFSiqZpekEJl47gmxYAQ7hC7j8d5/R1yshSATvE7uXYFB4yxrBarZjP5zx+/JjJZHIlskcUgbqur/jQhk7gFJKS8ZLILqUUZ2dnfVRYlmVMJpPe55PCPENfgNxrKnxTQZjCeOnvU/9UqhCl4za0FoeW8j8eCGgz+d0gdQOmgWgjBL+BcALRd3i1i+CtRaPRWc7+fI/lesWDDz7g1tEhp6fnZFnG+fk5uI6JZtqCNTT1mr3RiHe+/3f8kze+zvs/+ilFrvF1zajIyZRCh5bPfvYed24dMc7pIoXKgty1LBYLiqKgGI9oFgvG4wkBUKHFNTVnzx7Srs/53Ktf4OnFGXoy4r33fsTnX8vwKuvDDYkOoxXWXtUSZQF3Cyii9UZrUhETFWiNJWJDwCrIYsQaQFtKlRG8QllPzEoyr3CZxlXd2IHCNx2zb5wDFIEG5RVEcPFmGcXVeb3qLEsFgWziGCPWWsqyvKJlP3r0CGttjwWv1+sep5VNUlUV+/v7rNdrXnvtNe7fv99j+ym0cPfuXQ4PD3vzX5i7wCypFqi1pqoqLi4uePbsGXmeM5/PWSwWQCdsxuMxWmvKsiTP835Dp858uLQohlqpPEMqJOUYYXQiDOReY4xkWUZVVc/9Pg1jTKOHbpJSRrXt3ENmK8/tve9x+dVqRV3X5HneQ6qCzafrRv7Xdc18Pr8CAcp8yfVE80/Xl8B/6Vhba8nzvGf47733Xq9YyLXzPCfLMpbL5ZVxTAWA3Nt145A+Q3qsjOGQgct7mcNUaUh/f1MOYHhBBEAap9t/JhJOdcLAe09EociwpSHTnbnk2s6EOz095eXPfAbvPYvFAmMyiqNjnp6e4ZxH24zWRYpRTp4pCIbv/NVfkBd7ZLbAWk1sKzI1JoaW/b0JZWHJrCIvbAdB6SkdD9Yordnf30cri3c1sW3wvuUH7/4dn3vlM9w62qdxDT+5/yPwhra6YLVYUOY5ynZ5BhFQujNHBTJIJ9mHLgpKKbWxikDHQEbEy2AehwAAIABJREFUqogNkUIrOpevZqQMQQciFpspXBMwWqF1AOdRQdGoNRmRwnvQmkCk9gHlrpqwN0GpBp8KgFTbEe1fHKoxxl6bq+uatm17J11VVTx58qRninVd99qewCLGGN5//33u3r3L+fn5c5tXsPssy67Eocu9yn0YY/rr379/n3feeYfXX3+dsix58OBBL2AePXpE27YcHR31FoPMnzB9mdfh88ucp1qijFcqtOT4FAoSITMMd02Zihz7SdGHMf/0dapFC8QxHo85ODjocnjOzwF66wvoLTeZW4kKqqrqSrSUc64PExaYJPUvpKGecAnlibB5//33uX//PgcHB70gjzEyn8+JsYsCrKqqv05qqW2zhFLL7DoaCtBtmnwqKFJL9ab36AshALS9jMNVaoNzRbBao6LutaEYI9FbwmYDZD7QKo1WLbf2D2nbbpIO53sc377FW2+9ydFsxqquWFcNhdVoFaguTsgne0xzyxe+8FmenF6QkeGbimmh+Nwr9ziejymzLhQzs9mGURQYa9lMDZk2nJycMxmNCETe/8G7HEwmfO1f/gsePHjAbH+Pn/4/f8bBaM7q8Y958myJCp9j/+AIazNmB4egMrSOPbxhNL2/QxZxRHWJXar7vggeSyTTgSx6ss5lQa4VWNvNavTYDILzaJ/T1g0ZGpNnoJYEItY5fIyopiVaS7jhOFBhiNso1RJTHFQicCT6IhUGAK+++ipPnz7l9PSUoiiuaIQhBI6Pj1kul1RV1eP+ooV+6UtfYn9//wq0A11sf+qIN8Zwfn7eR4WcnZ3xa7/2axwfH/Pd736Xqqp4+PAhe3t7nJycXElWOzo64vDwsMegy7K84q9ILaCU4QuljD8VTGIdAb0vIIRwhfkNIQXRaNMQ2pugn8WEUo14CI8Is2vbthfgh4eHxBh59uxZ77xNHd8ivBeLBbPZjGfPnnVRfG1L0zRUVdXncojAAHohKfcr8xlClwT45MkTPvjgA46Pj9nb2yPLMh4+fMhkMmE0GjGZTJhMJnjvOT8/x1rbW12pEE/H5Odh0jIeQ7z/Okhn6O+Q6/yj8QFcxWk30nEjWDUBwgYzi118u3MO4y0xODAa6zJyrQhECpvhXMNqccFsMuXVV7/Em2++ycF8j4tqhcLgggcC5ajgg5/8mFc+9yrPTs+YTkfcOz7kM3cPKYsOg1fK9HH/YbMJYwi4umHZrjk4mLM+P2N5ekqG5o3XvsK79x/w7OSC09NT3vjKV/jh+z9icfYIYxec/uAZzdNblAe3qRef4c7LX8BkU9AGjSOzGWyyoqMPaKUIBDLlOoYfHKWObHKdyRVkm4zhnAJURKkNJh26LGjlGoytcUoT2y7ePepI0zQU3lGEQGgdrmlvdF6HpvyQhphoGh0kwi/NDRiNRn0Y5muvvcb777+P977XzGKMLJdLiqLg/PycN954o9fUb9++zZ07d3rnsoT8iuARbTqEwHq97sMPRdDs7e3x9ttvc3JyQlVVfOUrX+Hhw4e9Q/r09JTVatVri7dv32Y8HvdafhoSO3QoDplI6jtIvxdKo33S49IkuxT/v2kIKH2O674TSvHzbZE2IYTeb3N0dERVVTx9+rSzrjfHe+8pioLVatVDbavVCmsty+Wyt+aAK4I89bfIuMV4GWVV1zWvvfYa9+7d4+LigsePH5PnORcXF5yfnzOZTJhOp8znc8bjMePxmOVyyWq1upJot83Zfd14DKHQbfOT+sXk2FSQ3iS9EAIgNWHZ6Nd6kxmsUagNDt45hg0YDT4QnEEZTfSXJr4xCihZrhYcHezz4Mc/4mtfe4N//x/eZjIqaX2ANqAzw+HBIWfna45vHbFYLdEE7t25TZlnGL2BXSRbtm0JbJyTxqCsxRpD3awxRuFdiybw9lt/x1+8+RbnpydYrTg6OuJf/vN/zl9997tcXJwzmZVUsWKcwdnD+8xmM+JBRpZl5HaDaYbYJWspRaQLTTVakYWO8RutsXgsuhMKWqFU5+dQWhaXI4QMbVu0s3ilu8xlbYiucyqG6HvG6qhY37AFkEbEbDOV08Uv2KwwL2HQ4mSVUEBxwC4WC+7du4cxhp/85Cf9hlRKMZvNWK1W/PSnP+3N+pdffpmjo6NeqLRtJ+xWqxXT6bS3FkRrFkxaKcVyueR73/seP/zhD3vs+NatWzjneOONN3j69Cnr9bqPJPnggw8IIXDr1i2MMUyn0+eSiz5M+0+FYJoQl2qO3vu+dIZEtQC9hipaowiLm6QhnLdtbuW7Ye7CNkoFgbWWV155hUePHgEwmUz65yqKgsViwf7+Pk+fPqWqKqy1fSIXXB1PQQ3E95BmHud5zpe//GXG4zFnZ2ecnZ3x6NEjlFIcHx/34aRN0/DgwQP29/eZTqfcvn2b1WpF27acnp72loqsX1FcrhuHIYx33TilQiDN85DxSufh49ALIQBSM02pzeugUCp2FgAQN6GMNlq88kTrCVkguBzvHRgLIVLEKW29xtoc3zrms4bF2Tl74ymf/dwrvP0fvk8TFOVkBH7NfKJ5+KO/487BAYeHBxzMC/LMEkOXlSxMymaatnI0qyXlRosEaBYrqmrJw5/c58H9n/DD+z9icfqEO0fHfO1rX2OxWPDD994l8457x3eIMXLnYEajK4KreOtv/oTbn/k6xahk7+CYO7fv0VRtF8ZJjYmBXEMeWmyoMTiyGCiJ5CqQxxajFWQGrVWX+GY0Whf41qNah7YVbsNAnFmTKShMhikMUVncYk0RDcbdvA9gmwabvh9qhAJ1SCx7GmUjyWBpFmdVVXz1q1/lnXfeuZLAde/ePZbLJW+88QZN03B4ePjchhRtUDaxMEpxNDvnePvtt/nzP//zHgOezWZ8/etf5+Ligrt37/Luu+9yfHzMZDLpoaXVasX3v/99zs7OmEwm3Lt374qjWZjRcCMPmb8kKw2tgSHun45pioXLsZ8kBDSc2zQKJoVw5Ls06gl4jqkJ3HJwcEBd15ydnTGdTq/g+svlso8OEkduKlxSxrherxmNRs9FXc3nc1arFW+99Va/jsQ/5Jzrr39ycsLx8f/P3ZsHyXGeZ56/zKz7Pvu+0Y2rcRE3b1qiacuUddgKWZLXlhQza3sc8o7lsWJtazwrS17b492YGI/tlbXyoZGlsbU6LJIiKUq8AJKAABAAcTS6gUY3+u6qrvu+M/eP6u9joghovKPWhqyPwahCZ3V1VX6Z7/G8z/u8EVwul5Qe6WSIlctlisWidEjmrKNzdbKCOgu74jMK2PtOrxd1gR8bCMgcKcKm5zTanH1FUVDRMTZrAeibzBk2ObRW0UCm02rW20bAakFvtSO4RrWC3W5vp42FIiNDAxSLRSqNdpRZqTXxuJzsndzdjsI3o8BGoyb1SOx2O616HavF0o4Y0inq9Toup5NcMk0xleTkyZNUmw3uPXQE1+ws7/m5n+O7L75EXTXIVCoYTgeJVJLu7igXL75BMp2l0VTwh/rIxbL09vfjsuzgRnqVrr5+NKsFT0tHr9ex2GzQaqGhY6GFQ2liVRSs6NgsCqpFBU1Fs9o2GwQsGApoigqaRtOwollrNDUrmtWGZrWhqxZsNpWmrtJEQ1dVylvcCSaK23dKkTtxYvNNq+v6Wzj8IisQOG6j0Wizsex2crkcIyMjlEolstmsLOS53e42DLdnTzvLMbErKpWKFAoU1D+R3ttsNnK5HMVikfPnz+NwODh8+DBLS0vs2rWLlZUVNjY2mJubIxwOk0gkcDgcvPHGG9IIBINBUqkUPp+Per2Ow+GQhkTUJ+x2+20wkNnIC1hDZBXmDEAYGNHZLF5nPm7OALbaAdyt+GsuXIqfmR1AJyRjNv6dhdFisYjD4aCrq4uNjQ38fr8sJieTSVwuF9CO5EU/xJ1qSSKDsFqteL1e+TyXy3Hq1CkqlQqKojA+Ps7o6Ch+v59KpSIFBsfGxuS1Ua1WsVqtkvkVjUbJZrO4XC66urpoNpskEok79md0FsHFMtcRxH3QWQ8w3yfmc/RjQwPtZEm86QDe/Jm66QAMqY9jQTFaWDZPSqNRR9EcWHSDVrOOYdigpWO3vBkp5HM5LBYLe/ccZeraDOVqHb8/iNPrp1DIMTY2RqXWxpi9Hg+qosho3+1ykUtn8LqctJpN9EadWCaN2+HgW8+/wHve9W5m525y77FjHDp0iHQ2w62lRZbjMSqNOivxLKNj/aynEsTWVymWDXweF26lRr1Q4NrFWywuXGd0+yTZ1BqqZsVpqOwY30atXMWl6VhEHYBmG/tXwKIpaJoBmoKitSExVJWWAagqaG2BPUVRMHQFRbOAoWLVVbAo2JoGtpaOvdXCZqtu6b7entndGSe9ExRkjoaE8Rewh3htvV6XxTwRrYs0XUTavb291Go1QqEQ9Xodn88n/4a40c2F5kKhgMPh4NatW9hsNp5++ml+5md+hv7+fqrVKiMjI3z3u9/lypUr8sYXBeCNjQ0JQwmjX6/X8fv9bGxsMDQ0xMzMDKqqMjAwQF9fH/CmCJ45yjfTP83GXRhTAW2YjYv5NQIOgraUgbkrditWZwbXadjNxwSM1lk0NTsJ8Rrz+6tqm9vfarXo6+tjbW1NFn5FYd/j8dxGixUFb3MhWAQMrVaLZDJJf38/pVKJ06dPEwwGOXToEN3d3TLYW1hYoNlsksvl8Hq9ZLNZisUiitLWherq6iKdTtNsNiX05Ha7Zf1JZGxm2EZkLp2aQnC7YmxnJiyCH3NGZQ4YtoIR9CPlAN5qLCyyGCxfa1Uw2MTLdAtCRtoqTg4GAV83pVKpLSnrsGGxt3nGoXAbP15eWmXb2Ai3FpYIRKL0Dg7SbLVxZrvTiVWzUCjmcFhtWJQ2NJCIxdEUlXKhiMdmY31jA5uqcua11/it3/sEl8+e450/8ZNcnr3Bi2deoVKpcPHqZTweDy6rg5//yZ9g//79XLhwgaDdweWZm/iCbmYXZon6fdgddhxKlUpigUZdQTcg2NNHat2CU9OwexwoVh1VMdDUGg6nHU1RsKn2ttHXFBRVAUXFUFXamkFtSpEiMkXHpqSCqtHSLFBTcBqGxLudWxwpdl6od7rYxf6bl7m4JgyakHsWWi1CPlocE4wQl8slo/pgMIjV2u69ECm8yOjEEoqTIruYn59HURROnz7N+9//ftLpNNVqlcuXLzM7O8vCwgLVapWhoSEKhQJOp5P777+fixcvyteaMxHhVITRENx3w2hTUgV0JLIWIT0gnIBZG6gTTjEbALMRFcZYFMir1a117OZljl7N968ZCjJ/dmHABLQnflc0XQnDKoxmvV4nn88TjUZJJpMSsms2m3g8HhRFkRE5tA2+uOaazaasGQgjPTs7y9raGseOHSMajcq6wsLCAslkklwuJ7+b6D8RTtrv9xOLxaTzEZ8hm83K7x0MBqlUKvIzimy1k/ljhn86Db94L3EddDoDcfzHBgLq5D2/NRuAN2fX6IBlExYygE01T90A2oXiUqksi0MORwC3oZPPZNudvNZ2VFEp14hEunD5fHR194Jmwef3Y7M5qJTKBINB9EaTVCJJKBSiYW9iUxVqxTJP/tPX6OvpZv/+/QwNDfC9U69RK5W5PD3FzM059FoLu2rDoSi4LRbuPXoQgJuXLmLXGzx6/H40HVYTCY7s3cvSRoJsvkCxXGVubg6Px0sgGKam1GiVk/SHwrhrTroiQRyagdemouktVEXDrqnoqgVVs4GmoasKhqahKpsppaqi6G/qprRaLRS1DRkZNiug0tqMmhzVypbuq1l507yf4vndVic0ZGZxiPcVRqJSqch6gNmwOp1OBgcH0TRNUj/NMs7ZbBafzyfx4XK5zM2bN3E4HITDYR588EFsNhu3bt3CMAzW1taoVqs4HA5CoRCFQoF77rmHRqPB0tISk5OTtFotZmdnmZ+fZ9euXSQSCVKplCzWivdeX18nn88zNDREq9XWpDf3DQgDac4CxP4Bt0Eo5n01w0fifFWrVSmV/cNcd4LzzAauE/YwG0BoG24BiQkDKvZYOE632025XJZOXQgHGoYh6zdOp5NKpSKpoQ6HA0VRmJqaIpvN0mw22bVrF729vSiKQiKRYHV1VWaXkUiEjY0N+vv78Xq9JJNJ3G43qqoyPz+PpmmEQiGZZQjWl9PpJBgMUq/XZY1HZJbCeHfWPzrPn/mcmLNis+MU5/XHEgK6Y7TI5jH5arMmzpsXlkXVUHQDlLbypUXVsFlsNDYppE6vl0ggQDqdRlNUWo0ahqIxODpKG11X0RVVppjLK4uMDQ6Tz+bIpNP0dPdRKuT49ree4pGHHmZlaYHJXbsId0dZnJ7hS88+S1VvYsWG0mjxvve9j6DTyb0PHGN+YZ6urgiXZ2ZYv7WGvmbH4XVz384dvHL6exRrKrliDbfLQt0CiWqBfL6JEV+mEA7TKnXjiEbpdygYRhObx4Hf70fbbErTVA1FbeP4iqKga4Ci0cJA1Y02m0hVMAyVpvYm1txEoWm1oFkt2O3W78vb34p9vZNz71ydkaM5wjQbPnGDCD2ffD4vC61er5e+vj7ZmSsYONVqlWKxSDgcptlsyjpAJpNhdnaWWCzGwYMHGR0dpV6vc/LkSU6ePNluMhwcxGazMTg4SLFY5B3veIc05Pl8nqmpKfk3BgcHmZ+ff0v0XalUWFtbwzAMQqGQrHOIHhDDaM8nEIbczAAynz8RKZqda+drRA1B1L+2cpkNWOc+de6Z+JkwYuL1ZikHsZ8iK3A4HHi9Xur1umRX1Wo1aQSF4RcZobgmWq2WdBDd3d2Ew2EikQhra2uMjIyQyWTYuXMnNpuNYrFIOp2W8hLCyVSrVXbu3Am0exFGR0cpFAoUi0UOHDiAqrZF4kRNQDCw0uk0GxsbkmIq6l/m+qa5BiX2rPNcmmsh5vNozqA6z/kPsn4kHICqWN4SJSqqOaVEHkM4BGMzIlQ2ceTWJtXNULA62tGB0WxiqTdoGjoW1U6pVkWxaDhtDnK6TjAcQbc6URUFTTFQ9BZYbVSKZQLedreo1W4B1eDW3DSvnzlFPpfhiWef4sG3P8rJy2/wxJf/G9Prq5SKTQ7u2YfPrvPg2+7nuW8/y4Gde5i/Psfc4hJ/8Tf/wPjYKDM3b3HgkJu6YvDSk09jsWg0FQuqCqVyFV0Hu92K2lAIurw4NDsur4+q3iRdSNHldeHyetAsm3AQCqhtqmxLbaEoGhajLaKnoIEChoX2TABDR28aqFYVVddRrRY0qxOL5kRTm1iUHzylNC/zjX43J9D5aMa2zcfMN7+5UCYiXzENLJfL0dvbi8fjkRGkWezN4/HIQp6maeRyOZ544gnW19fp7e0llUrh9Xr5yle+wuzsLHNzczzyyCPSqVy/fp2JiQmuX7/OlStXJEwgDFI6nWZ9fV0WeYVBEGJmTqdTNp4pikK5XJZwUSf2b2YEdd7wnRmBYRjSgAoDZO5q3up9vdvzzmjffMx83KxoKoylqAeI/zVNw+/3UywW5TGHwyGnvQnjL6JsTdOkkRWF/eXlZdbW1mi1WrjdbgkZzs/Ps7KyIocJFYtFmR10d3dTLBap1+vMzs7i8XgYGhoiHo9TKBQoFAr4fD6ZeZlptq1WS6rEin+LPTJH9/DWfolOaLTz+Pc79/+j60fCAdwxUlRv95TQ0W1n3N5AprTe3AThIe12O1XDwGoY6LoCuo6qaNgcdsb6+nF6vBio7c1vNLC5PTQ2U9BoOLiJKXuw2Sy8+p3v8tQ/PcXB/Qc4fv99jPUOYHe6efrsGzgsFsYHwvzy+x/jr//qc1w/42e4Z4RUtcHXn3mKjWSJ4d4oS8urPP4zP813TrxEtlRj+45xhoeHee47L2C3WmkpYLFr2J0Wms0GxWYLr93PzM3rjIW8jPhGwWhiFMtoQTtWh4ZmBUNrO0mtPQUAFKPdP6CCjoqitMXkFENBs6rouoHRaLYnrqkKmrYpQ6FZ2crVCQF17uPdDNPdagVmxyAiR3HTC6M5ODh4G+2yVCrh9/uBNjwgfre7u5tqtcr09DTZbFbywvs35UROnjxJs9nkoYceYt++fVy/fp1cLse9997La6+9xvnz52m1Wvj9fsnwEXTRXbt2YbFYmJmZkf0GLpdLQgNiRsHy8jKhUIhAICA/l/jeZuzffKObueOd7BkzC6azmLyVy+yUzc/vBm10/m4nfm3O6MxFbGH0nU7npryLJou9okgslriWBARTLpe5fv065XKZubk5otEo4+PjxONxFhcXuXHjBnv37pU6RF6vl4cffpi1tTWuXbtGLBajUChw9OhR6vU6Fy9eJBgMEgwG6e/vJ5FIyH4URVHw+XxSTlzQVCuVitxTc4Z2J+y+M1syPzczwMyvv9P5/v+6fiQcgJn+ZnYAcHuxo9MB3JY1aG/eJOJiaDabsvgDtDH9SgrF5sAZCODx+GjVmzjtDqrlNu1MaTUJBH1ShtZt9WK32xkcHeN/+fjHOXPqFPfcc5DvvPAiOnBw53aCHhv37Z/k6tnzvO0nfpLZ5RgLN2a5Mn8Tm8tJV9TCY29/jCvXpti3bx/Pvfwiu3dOUCyWuHnzJh95//v59refZd89R6nUyly4cJGdkxNcv3kLFB27wyrxz3ilRETroW6zYXfaMGhitLRN6QwbtEeDgWqgs9lLoaptaWljM/rQW9Bqoeit9lQ0UWTaYjG4zn3t7AkwZwedqbF5v8UyGxuzURPwgMViIRQK4Xa75c9EJC6iSuEshIZ/OBxGVdtBwAMPPEAymeTFF1+Uhb9Dhw7dpkZ57tw5ZmZmcLvdBAIBHnnkEWKxGOl0mnA4LHHjfD7Pjh07mJubY2hoCFVVyWQyOJ1OYrGY1Jq3Wq1Sy8rlclGr1STFUWQ45iKwOA/m8yl6GMzYsTlL2gqs2LzuZKzMx75fZNppuDphIfFdzO8jCvVutxtFUW6DjUT2AMi9VpR2M1cmk2F9fZ1t27YxMDBAs9kkHo+TyWQ4evQo8Xgcp9PJ+Pg4Ho+Hb33rW2QyGdl/ct9997G+vk4sFqO/v59ms8nMzIz8bLVaja6uLtm3IthIAq7x+XxUq9XbBhmJPROO4U7FYPNzs8MXv7+V+/kj4wDeEikqt2vmw1sdgHyuKKC8STkUp0e12Gg169gsm0WZZotgJErvwAA2t6fNE69myKTTNJo1It0RGoXSpqxyuwuxVKmBofL8iZdoVcp88nd+l6tXr7L3ngP8xWf/LwaCXj70ofdw88oN3vaOd/N7f/QZbiTXSMRy7J0cZ9vwGOPDo8TW1kmnEnzxi1/go7/8Yf7ic59HUxUOHTrMP33jq3zgAx9gPb7G+fNTHDiwl/MXrnDk6EHeuHARu9WGo9EkpKmE+7sxHHaUTRzTpWqggcVuAdpMIEWFlgGKoSOkLCyaitFqAQotQFNVGkarXTfR26MkjTtNrd+ife00Wv89KOhOj2IJ42ZW+4xEIoTDYZnmi8JwIBDA5XLJyKzZbErdGLvdzmuvvQbAb/zGb7C6ukoikeDq1auEQiHuv/9+yfF/7bXXqFar1Go1Dhw4QCQSYWhoiBMnThAIBGi1Wuzfv5+TJ09is9nYvXu3dCpOp5Pl5WWGh4dZWVmhp6eHdDpNvV6XEIiQOhBNbuJ7C2dgPgedlEAz913eA6aoeqsF4e4EQ5iNV+dr/zmvkUHaZlYnXi/0gQScJpg1oigsjL5wHIIBZrFYKJfLeL1ehoaGpJJouVxmeHiYYrHI8ePHaTQaxONxzp49K+s5Q0NDbN++nbW1NZLJJL29vdJRCzaSx+NhZLOuIHj/goZarVZld3k4HJZdzsJJmzuSO3H/O51j8e87dTv/oOtHygEAb8oh0/rvOoDvZ0TEBaUpVgxdodUy8Lh9RLqi+MMhmq0W9VpjM1qs4g300DB0bFaNjWRh8wZT8AX8pFIprr5xgS/+7d9wa/4G6UySL33tK8Q21hnvmeTa9Cy9A8P820/+HteXF9izdxePv+1RbKjcd/gw165dozvi53/6xQ9QqVR46eRJdk2MtBklXjfvePwxTn3vFXr6BvjAhz7Is89/h+MPHGN8eJRqtU6hVKFQKfO9hSVm1mPsHwxzePckAacDl1bD4XNSrRTbkhCGBlYFdVPIon1tbdJBDQPF0DGaLZr1Bnq9Rr1RpVItUavVqNS2VgvInLreqZj5/Qz+99tXEekKip3FYiEajeLz+VBVVf5MiHmZDaau6zLyTiaTXLlyhQMHDhCPx8nlcjz77LMsLy+zZ88ebt26xZ49e/jqV7+K3W5naGiIhx9+mEajwcDAAPPz8+zbt4+BgQHJABofH8fr9eJ2uxkcHGRjY4Narcbk5CQzMzOMjY3h8XhYXl4ml8tJFlEymSSbzUr4yOPxyJ4Gc2ZkNvDCcJppgmJQjBBbE5TZH+b6flH/PweqMB8XEJAo1AquvzDwwlGKAr8ocJsVRQXXP5vNsnPnTnp6emg0GiwsLBCJRCRUWCqVOHnyJEtLS9hsNvx+P4ODg7hcLi5dukStViMSiaAoCisrK/K77Nmzh0qlQiKRkFPlstmsNPxC4TQcDsveADNV2dyn8M85h+K8wJtZxI8VBNQZ/bf/fXdqKLS1gm7DR9UOjykeDYVSvsTVK1d46OGfAE3FarNj1OuotBvMvAE/Tb1Bq9WknM1ht9sJh8PY7XayhQKXL1/m+MGDbKyscPqVk1y/Ocee3ZPUyhUuzFynYvNi80dwhh3835/5K9JTs4RCIVbW1ri1MMdPveMxvvil/0rD0Kk16gT9foaGhlhcXGRxfo5gbxhf0E+xXOCZbz9LsVrj2vU5rl27hmp10tB1CuUSrWoFp1UhGdugWq5xcGwMZ1MHzUJJN/DZNqdTaaahFEpbRgMzpUzfbKzanGFQr9cpFotS534r97XTqP9znMCdfn6nVSwWJeVSRNGiQ1hE04K1IQxIKBSSvQI3btwgHA6ze/dupqenuXKubywoAAAgAElEQVTliuwtWFxcbO/hygpjY2M89thjKIpCd3c38XgcXdfZvn27bASbm5uj0WgwPDxMoVDAMAypRVQoFHj22WdlN7OmvTmFTFA0U6kUhUJBRsDmSNh8b5ijP3NjFdw+LU1kQOVyectpoGZaonDGd1t3gonEe9xtb4XzFPCL2fEJkTYB0whoTXDyBW8/lUpJJlAmk2FxcVFOFkun08zNzXHx4kWGhoY4cOAAgFQlzWQy0hGIgm53dzderxe/38/y8jKRSIRt27bRarWIx+NEIhHJWhJMrlqtRqVSwefz4ff78Xq9spZRrVZl/404T53nprMG1Gn4f2z6AFTLm7oW9WabL61uYjx30sL+fgYEdXOYhqLSajQp5StUU0luvvE63V4PD739p8kWK9iNJvVGE7vXx+pijK6+IJZSBVW14I9EcXn9WFRwVIvMzVxhZGCQf3ryCbZt28bVmetcu/oGPRE/ffdM0ixUia8s8ulPfYZavggjI+0OxrFBQqEQn/ubv8Uf7eHSzQXOnn8dA5X+kWGuTM3g8XmwlHSy6RRGs4bdAgMD/eQLRSyqg2wqh8Vuo16q4XK68Xq8JIsp3lhPUdNVol1hWtk4/lAQi9qgVW9gdzpotAyURgu7FWqqDUNv0azVUIwWSqWMrV6hUi3RrJWpV6pUq3VK1dpbN+cHWGZ5AqHVb84I7rSvdysYC0Miir6VSoXZ2VnOnj3L+vo6H/nIR2S0LOidgqbXaDTahf3NLEEYySeeeAKHw8H169dJp9OkUik8Hg/RaBSPx8POnTsJh8N85CMfYWpqSmrAeL1eFEVhfn6edDrNqVOnSKVSUvtHwBaGYUjj63Q6GRsbI5FIUCgUbhtUIprc8vk8V69epdFosH//fnRdx+/3S2hHnBNd16X+jWEYsulI9EQIKYNKpUKxWLytuWkr1m2BF0hophPK6IxS7wZxmPnu4lxcvnyZQCBAX1+f/K5Wq5WNjQ3pBMwT0ERfQCAQwDAMkskk+/fvJ5lMSrmH1dVVGSAUi0UeeughotGoZAgJOKmvrw+73S7VP0ulkpz9IOSis9ksyWRSDpPp7e2V8CJALpeT/QqlUkkGFm63W1KWRTAgYC2xt53Z7p3ujx+rDMAMFcgCWKshKXR36hS+W8RoKGCzWKlXa1gUFZvLSWK9ycd+4xNUnRoWl42Tf/MlbsTmuTh9lT/5T/+Z8YlhZq5cw+5y0zfQhX9TCMquqFw4fYpnv/51HnjgAWr1Jk88+SQ2u4U9e/aQTqc5MHkPN2euEx0Y5Bvf+CZOiw2v00Uuk6Zar2B1uxnesYP/9uTTrCfTlOtNGo0WiakZAArFMrZyBaem4LDZuf++41y+fJV7du0hXS6xduEiI709TOzcwcXzFyiVy9g0yDcNErUa00tLTPb14LGWKNTq+AIRWpVSuwZgddBs6mjaJoOm2W6Cq9cq1CtlyuUCpUKeTCFPulAhWdzaRjBzDcDMdZezDzoErcyRXue+ArLxBtpGJxAI8Ou//usSI37iiSe4cOECq6ur/PZv/zY7duxgdXUVVW1LDQtRMYvFwokTJ5idneXw4cOcPn1acvh37dpFqVTiyJEjLC0tMTAwwD/+4z/i9/vxeDycOXMGn8+Hw+FgZWWFV155hWKxSKlUklivuOnFd+rq6uLBBx/kypUrTE5OsrGxwfT0NGNjY+i6zszMjIQ0Go0G+XyelZUVSWUUBkr0DFitVmn4zNCP6JwV3ciCsrjVmZ1Yos4gIDexX3djtNxtiV4NRWnTYp955hmWl5cJBoPs3r2bgwcP8r73vQ+Px8Pc3Bzf/OY3pQqqWZzNbrczPDzM+fPnueeee6Rsc61WkwJzlUqFwcFBenp66OvrY3l5WRb84/E4drsdj8dDLpcjnU6TyWRQ1TfFAUV2Wa/XmZubw+fzEQgEWF1dZceOHSQSCarVKgMDAzL7MgyDXC5HKBSSfQpmVVARKJmDpE54z9wz0Pn4g6wfKQdgTieFyJO5tRvuDBF0OoBivoBNa48QdLm9HLzvfkLhKIreolUssLhwk6VkAUX381NvewcXpi6ya+dOUuUqvmCIWr2Kz+WmnIrz53/8h7zvsUc5PT3dvrndLnbs2EFfbz8b8STfPX2KjY0NUt87xa3FZe699yj9wSDVcoXdu3fzlW98g4OHj1HKFxmIhKnXvaAb7N61C5umYug6o9tG+OY3v8nkju3sHB1l18g2rHYHf/PlL+G3WUkuLeMADu7ejdvtZjEWY2N9mVarwWhflFAqQ7NYZGhkAKVeQdUULKoVRVNoiRkAuo5Rq0GjSatcolYsUSkWyBcLpAoFEqUaicLWGgrzvoq9EhGPwG7f0v9xt301RdNCFvqBBx7A7/ejKIpM8+fm5lhcXOT9738/X//61xkfH5cMHfE+uq7zta99jQcffJDp6en2OV1cZGRkhJ6eHpaWllhdXSUejzM7O0s6ncblcsm/FYlEePHFF2VXsdvtJhKJUKlUmJiYkP0ADoeDWCzGnj170DSNd73rXczMzDA/P8+2bduYnZ2lt7eX3bt3S7XRTCZDLBYjEAiQyWQk7CQMvKB1mrtLzYNRRNRfKpVkUVPg41u1zBCEeQSjGZ66k+HvpI0C8vuYZRNGR0fZtWuXnPtgsVj4tV/7NTKZDL/0S7/Eu9/9br70pS9JmE801NntdonVp9NpFKUt5T0/P8/IyAh2u13CNhaLhbNnz0q4JpPJkE6npQMXwUa1WmV5eRmPx0OpVKJer9PV1SVlvvP5PLVaTRb9hVz0zZs3JcQzPDzMwMDAbfUYQWEV9k3QmM3ZXmfHdOfzHxsHoCkqivhPGgxDCjkpypvNInetCWwaErMSn8NqIxQI4gz4UZw2jI0M3/7Gtzi/eAvPzqO4unT2+4McuvdeLr90CqdFoZBtp8slQ+fS62d5/NGfoF7KYzQbBPxeLl+6yr/6V/8zn/3c5/jABz5APJMlFouxurzMn3z6D/irv/48J0+e5b4jkxzx+njP4+/ii3//5XZhkBZBl4MPf/jDNKo1hocG2ViP8cqFc/zyhz6Iz+2mp7uXCxcu82d/+ZfsHB/D5xuVWPTuHdtZWFigmM1Qq+m0XArxbImIphD29hGLbeBwFbE4HSgWK1aHB384Qr1al+JkVk3DaNaolPOUyxVyhRK5SoVsuUrxh6gFJIy/wLHNjTH/3H0Vy+Fw0N3dLZu98vk8f/u3f8vMzAxer5fx8XGq1Srvfve7uXnzZlvKY1PfXdM0ZmZm2LdvH6urq6RSKVmQe+ihh7hw4QLd3d2sra1x+fJlLBYLkUiEgYEBXn/9dY4fP874+DgbGxucPn2aoaEhKTdw/PhxBgcHyWQy3Lx5U34Wp9OJz+fjmWee4fz589hsNrZt28auXbuk0ZiampLjJQWEIYybeRiK0MX3eDzSwAjDWalUpMEXReVsNkuhUNjSfTUbdTPtVEBwAt67E/wj9t0c8NXr7SFFwgl4PB5sNhujo6M4nU4WFxc5ePAghmHw+uuvUyqVJF7fOeDn9OnTDA8Po2maNNyDg4P09/eTTCZZX18nk8lQKBSw2WySLrqxscHAwAC7d+9mdXWVdDotpSOEEqnIDkW9JxQK8eCDD6IoCouLiyQSCdlQ6Pf7iUajhMNhstks165dw2q1Mjo6iq63h9EIO2W2WSLSFxmeWVBRZFx3q6v8j6wfCQdwp8KgruugqFg2m1naUaN10wtuOozbDIZBy2hX15WmTrPRwOtwEYqEMVQFj6rwnz73eWLpLC+8cY3/8zd+nxvZIl/+wl+ze3wv7qAfh6FTzhdQLArNaoWRgV5s+yfJJxIsxWIcOHKcSr7MzfkFDh27n41MidH+Qdb6V/kPv/UJqoUSO3r7cNls/Mq//lX0co1LZ17n4x/7ddKZDNFIqI3TFvLY7E7m5ubo6+vn3e96L/VajVCgHWEGQn7+13/3cYaHejF0nemrU/R3hUjnsrRqJd5+/3EmJiZ48fkXmF1YZe/4AyxW63RrYDfKOFtNIpEwil6jmIpRrzXxejyUCnlquk6pWCKfzZAq1UnnCmzki2wUy6RyW2so7kT5NDcqQZu7bZ6leydHIFgTwli43W78fr9Mnb/2ta+xuLjIa6+9xm/91m+Rz+d55pln2L9/P263+7aB8o1Gm/l15MgRdF0nHo+zY8cOLly4wPT0NMlkkkAgwMTEBD09PRw7doxYLMZzzz3Hvffey3vf+14WFxdRVZVHHnmESCQiC4UCR3a73bztbW8DkMNFcrkc+/btY3x8nHA4TKPRYH5+nnq9LjuB7733Xnp6enj11VeloRdzkMWMWuHEcrmchLMqlYqUshbDTcRUq3w+L8XKflhLGHTz0BvhVDsLxJ31AWH0hKy36PLt7++nq6uLtbU1HA4HTz31FLVajYMHD3Lx4kUJw4nrTFVVSqUSXV1dlEolZmZmZLPf9u3bmZqaotFoMDs7SzAYZHV1lYmJCelwI5EIHo+Hl19+WUpK9PT0EAgEZJ0gFovRarUYHR3F4XDgcDg4d+4cxWKR9fV1wuEwjz/+OKqqkkgkZB9AJpORMOWZM2fYtm0bg4ODslHR3ODW2fvRKR/9lprnD7h+JBzAnaJAs86HKM6IAk4nNqwo7cYxVdWobxYyi7k8/V091DHwWFVe+sY/kSzmOHH1MgoOdhebFL0BRnZOMphep6pBS1HxebxoVpXExhrT16YYDfgYiARoahY++zdf5N63vQ2n08XhXfvwBYJUKxl+4xMfp7AeR7WqPPb4TxFf2SC9GsOuWjh+5Cg9/T0cOLKfhZtLHD5yDF1Vqek6TpeHbLGE0agTjXZTLORoNev09PbSOzDI2e+dYH5ujqA/wK2lW6zG1nF63EQDHtYXF/iptz/Kyq1bnLl8lZ6on74dE2xsrNMV9FHM5XE4HJRKZWqNFqVMBkXRKJVK5Eplctk02bJOOl8im8tTrreo1LaeL95Z2DU3sgijISChu2UBgoMtMG6B5auqyiuvvMIrr7zCxYsXqdVq9Pb2Eo1G8fv9Eheu1WoS5y2Xy6yurpLP5xkYGKC7u5tnn32WiYkJXC4Xw8PDjI2NSS2a/v5+XC4Xjz/+OLFYjEwmg9vt5r777qPRaBAIBEgkEmiahtfrxel0Eo1GpWEWXanRaBSv14vNZmNqaopXXnlFOoylpSVJ/VxdXeU973kPKysrzM7OEg6HmZiYIB6P093dLY2C0McRkWKpVKJYLJLP58nlcvKxVCrd1jG71cvM3xd71tmTIH5uxq7F6wUe3mg0pJNTFIVoNMqNGzeA9oCdd77znezdu5evfOUrUthPsH6EIxEFYAGtjY2NMT8/z/PPP0+lUiGXy7Fz5042NjZ4+OGHicfj0gCPjY2xvr7O7t27ZQHXZrNhs9lYWlrCMNqD7EOhkJznIIThIpEIhw8fRtd1FhYW0HWdUChEJpNhbW1NQkW6rstu4zNnzrBz505Z5xTS5KKnQUiHiP02w0Lmus8Pun5kHEBntCgiRfO/hZEQF5i5k9SKhWZTR9FUWsUCfQEfpWoOry1KrdHgxIkT9I+Ns/SNr4Pe4KlrZ/mLv/orPvSRD3Pw+KPYDBW11gCbSrWQwtGq0uVzkcsWKFs0goEoH/7wR1mMb9Df089A3wBurxd3cDulXJZKw6CFhUqhzn333cdrp07x6KOP8uTT3yI61M9z33mR/bv3tAdG6Dq5fB67y0koEqarq4/u7m5u3pqn2WqxM9KNTbOQ2ijh9XZTrNZ574c+KtkJxUyepaUlXn/9HJlsgcd++ue5fOEiUysxdo+Po7Sq1BQL6XQGVAWbxUlJ11mLrdNstdAcdmKFAgVUCq06+VqLTLnGVosGd+6rWGaZg1arJbsnzfsufl8YDqvVSrValVGVOP7Nb36TcDjM6uoqiqLw1FNP8fTTT/OOd7yDgwcPyhtF4MSlUglVVQkEAtI5PPLII3g8Hrq7uxkdHQXedE6JREK+fteuXeRyObq6uqS8wMzMDOPj4/h8PuLxuIRphLEQUgPiM9frdZaWlpiYmMBisfDAAw/gcrmkQ6vVakxNTaGqKkNDQ7z00kvk83kGBwdlo1EqlcIwDNnjsLKyIs+dYCOJgTaCcfTDWp11GvOj2dl3RrFiz4Wst/m4zWZjY2NDFngtFgvvfOc7mZ2d5Vd/9Vf53Oc+d5uUsygCp1IpisUiAwMDxGIx/u7v/k6O7wwGg+zfvx+AoaEhWa8RYyDj8biEWru6uuT86VKpxNDQkJw7nU6nZWCh6zoDAwMAssN8dXWVa9euSQpuIBC4bdb1888/z65du5icnGR+fl6yvCKRiITAms2m1BoSSzgqeFMGZUv2b6uwpB9kvfitJw1ztGjGf8WFLWoAgmf7FtW8pk5Db1KuFrCWKkR8PmoW6OkbxeFx86/f90G690zyl1/8ErYmNFUNr8dJrpqmmkqTXlmlYTRxa1aMWplbszfoi4aZunSZyclJ8o0mnlAIze4kV6lQrzXbWOvqMr1d3bSaTVZXVzGaLYLRCOvr63R1dbVxUWB6eppHHnmEXC6HxWpHs1lptJoYqHT19mC325mbn6eht+iORHE5nTzz9HO89+d/DpvLSTyxIacOOR3tgeWqTcXjdGJVNVx2G8l0jvjqKj3hALl0ivX1dXRN4+mvfY1wOMwX/u4L6DpEIm18stkokyoUieXKFKpNKoZCy9C3rB345MmTd9xXs+M2Y/zCEJozAHFDCIngQCCApml0dXXhdrv54Ac/iN1u5+mnn5bQg/j9lZUVXC4XqVRK6smsra3JLlKLxUIul6O7uxubzUal0mZBFYtFlpaWGB4eplQqEY/HMQyDYDDIjRs3JDXRMAxZYBTvKTJUoK3YqmnSyAhlzvn5efbu3YvX66VUKkkISbynOEeK0haySyQS5HK59lCjfF7OpL127RqVSoUXXniBtbU1mUUIRyGM6KbB2LJ9/fSnP31XoyH2WxgpoesjjKB4jXgU50gwdoSkgjD8okajaRoOh4Nr166RzWY5evQolUpFnvN0Os3a2tpb6g8ul0tSdwW1U3Dw19bWsFqt+P1+DMOQAYbo4xCMKzFQStQDRG2yUChIYkK1WiWdTmO32xkZGZHd4aIuoiiKdMg3btxgbW2NfD4vm90KhYKcRS3mHESjUXbu3Mn27dvla4RulbiHfv/3f/8H2tcfCQfw8jPfMjqNvvm5iALFiTcbEPlotAemJ5LrrF65Rm84xNieHQQGxjA0C7/687/EUrNOvF5mY26VpsWCzdri1NNPMbptiEuvX2bH8BixtQVUBWqVEm6vH4vVRjgcpmi0sLnc7e7NWh2jVubChQtkl5c4fu/9JJJpHG43ChrBrkgbasnlsCgq8fUYR44cIZlOkc/n8fh9OF3tVvJ4YoMWBql0mlA00p5hYLVx5coV9h86hqppfPkf/4HJvXvYNtoeT5faSFGvV3E6nfj9fmr19o2gaRo2i5VMKt2Omu02SpUyKqC3WrhsVhS9xde+8v/wta/8Iw2g1tIp1uqkCyVaCrT0rdODePXVV43OfbxTd7cwdiJSNx8TDiEWi7GwsMDAwAADAwNEo1FcLhe/8Au/wK1bt2TRTsBMf/iHf8jHPvYxksmkFOYS2vzhcFgaJrP+jGgSymQylEolenp6SKVS8rN4PB5isZgs+hYKBQYGBqRmvMvlwuv14vP5yOfzMgqMRCISshGNQS6XiytXrjAwMEAikaCvr09iwQLqNLOorFar1MQRtQ9BhbRYLMTjcb7+9a/z1a9+9TZDmkwmBWzw/4sD6GxSEvDF3QrDYmKZOGeq2tZlymaz7N27l+XlZekYr1+/ztmzZ/nFX/zF20Y9iuBAOJ58Pi8VWkUmJ4gDInMql8vUajUWFxcljdXj8RAIBKTGv1lTKp/PEwgEJBOoVCrJ68DlckklWrfbjdPpJJ/P36YAKwq7ot4h2FtWq1Uyg8S1KDLV2dlZpqamKJfLHDt2jJGRESlpIc7fv//3//5fvgM4+dy3ZKQoDcVbirybP7e0jb9I6QVVtNU00AydSxfO0K1pdAWC1Cw6Pbv3EQl3s3JjmUd//j1YfW5Gh4bx2oOEQ37+5D9+mkw8QcgfIFcs0SwkCXi9nDt3jm27d6FbbBi0ozlFa19QrVKRRj7DaydeZnV5iUKpzM+9/xeY2L6D85cus7y8zMjICM1mk7GRUXK5HE67nXMXLxAOh6lUKqxvxDl27F4KhQLBSJj5xQWCoRDRaLTNUsjn6R/aRr5YQNU0rt+cxWmzs2/vXir5ItdnZojH46gGHLvvXmx2Oyg62WwWnTZv2ev3oGgqitVBo1bHqirYbTa6QkHWV9f4gz/4A85dvEDP8ACra2s0DCiXq1tmKE6dOmV0trDfcU9N/QICDzbT4mq1GsvLy7ImNDg4KBkWp0+f5iMf+QgjIyOyiPjQQw/xp3/6p9IwCIMuMolIJCLH+QkZadGss7CwwNLSkmz86u/vZ9++fTgcDi5duiSNr6a1RwHevHkTt9tNtVrF7XazurrK9u3bcblc0iGIOdOC6ul0OuWw8VwuJzHdrq4uVFVlZmaGYrHI0NAQ0WhUOsJisfgWNpygP4reijfeeIPPfvazzM/PY7fbWV9fF7WCLdvXz3zmM983AxDLnM0JjrvYUwHrdXV1yaK16HWo1+u8/PLLDAwMcPDgQaanp6nVapw7d47777+/Pbp1s7lLVVXZ8CeuNXG+BUogDLSAjuv1OsvLy4TDYcbHxymXy6yvr5PNZimXy4yMjOB0OuUUt66uLux2u9T7F7CliMSbzSaZTAaXyyUdt+j2FoV6kYkkk0nZBS5WZw+FWd5aSFKfOHGC4eFh7rvvPjRNk5DQH//xH/9A+6p96lOf+kF+f0vW0vzsp8xGQFVVVOWtzCBFUaTGg6AFiilCDruTZq1CrVTCYyjcnL5G/9ggNosTVVHxRiIc3X+AUmyNmfNn2TkxwZ/9H3+K4nCgNVtYFIWm0WRlaZ6Az09/fz8Op5Pcpu6IRdNwOpwYzRZz09O88t3ncGgaL598hWCki8uXr3Lm/DlUVaM32oUKTE9N8bu/8zsYuk4mk+Geg/vp7+tF11s06g3SySQYOi63h+WlJRrNJlNTU+RzOZYXFnnuueepNxp4fV7GRkawqhpf+sJ/5frMNYb6+9EbDQI+H5VyCfQWka4eyuUaDrsLm91Jo17DoqoYukIykWB9PUbAH8RQrPj8IR7/mXdw6nunSOczFKtlFFXj937vk3+wVfu6uroq91XcoOZ97iz6wpusIHEziCJxLBajWCxKvX7RVTk4OMiRI0c4d+6cFO7667/+a/TNcy4E44QSZyQSwWq1srq6etv4SPE3VlZWSCaTrKysYLfbSSQSzM/PE4/HpT5POp3miSeekJOi+vv7JdXTLEegKO3+BEELFaqh09PT6LouO4orlQovv/wyS0tLMroMh8Pk83lZIBc0TxH0CJ2feDxOMpmURnBoaIhHH32U9fV1pqenAfB6vXziE5/Ysn09ceLEp+52zMzuEXsoitaAHI8oaKOZTEYyuoTgm7g2nnjiCU6dOsWRI0eYmppi586dTE5OSiVVYfwFMiAGv5vpkjabTeLwpVIJw2jLvW/btk3y9RWl3duxd+9eRkZG5PwAq9VKMBhkZWVF9hWISWUioxGQXF9fHy6Xi42NDTKZDB6Ph56eHtkEJmAqMQJUSIkLaEroNwnHKDIYn89HT08PO3bsYHFxkTNnzjA5OUkoFALg4Ycf/oH29UciA3jt+WfvmgGIJQ2FqsghIOJCcbvdlKsV3JqF2WuXWb3wBqMDvfj6IvicUXC56Tt6AG/NYP3sRX7zY/+GL598nsWNFG6nn6rSwmNTmLs8RWSgF7/dxeLSLYrlKnafH18w0J4i1VJYXl7m3ImXOfHUk7z9kYe57ycexVAVwl1RNpJpUpk0hU0O9/DwMKVymX/4yj9y7NgxTp16jWg0yqGjR7DZ2hFFJBKhYagkUyn6BvqZmJjgySefJLa2zod++SN89atf5bGf/ilmZ2d56IEHyabSPP2dZ0nEN9g1sZ3+3j5u3VqgXK3gcjjp7RvA6/UzMzNDuZJn375J6vU6N+fn2LfvALH1OFaHk0AgwNDQALdWFvn13/wY8UQOxaLSaLS2LFI8e/bsbft6JwzY/Ai8xUmI63N+fp7z58+zb98+rFarlHWYmJig1Wpx+fJlPvWpT/H5z39ewgLC6QjjLYyAGOEnuomtVisrKyu89tprrK+vUywW8Xq9jI6Osn//fgqFArVajfX1dfx+vywEXrp0SRq4er3O8ePH2zImm52j9Xodp9NJKBSiv7+f733ve0xPT3P06FEZ8Qphs76+Pl544QVarRbbt2+XevPbtm0jm80SCoWkwmWtVpMOolAoyN4Du90u/1Y2m+XjH/84Fy9eFOfjhwYBdTpxs/GHN2s+omfAHN2K4riIzsUc50ajIam1ly5dwul0Mjk5STablVi5YHYBt4nCCQfkcrnk+9lsNin+Jhr7zKJ9Ho+HpaUlSqWSZFuJ0Z8ej0fKUdTrdcrlMoVCQWZzQuxNOB8h9CdqVd3d3SQSCRkURCIRIpF2nVBg/8JhiQY04eBE4OLz+SiV2vLxop7o9Xr57d/+7X/5ENCpF75tmI2BoihY1Ls0CGlvEpfMEYDL6SGfy+FQDCrpBBG/G7sGuVoTVXGA1U5+fZXkyhJHj91DzR/BarOjq9Y2RavRbGN8mQwum5Wbszeo6zp77jlMsVYhGOwml0piUQ0+/1/+jFqxyMGDB5m87yFcoQDFcpFkLM6u0XFS8RgbGzGuT10D2pFeT18vr55+jWKxyM/+7Lvaw8KtNm7dWmRgfFxGRsPDo5TLZaanZ1BtVrZt24bH42ZpaQmHzcLCwgKpRJp3v/c93Lp1C7fbzR9++jP8h9/9JF/++y/z6GM/iaZpTE1fJzCjr2cAACAASURBVBAKsri4yLF7j1IoV7DZ7VTqDQLBMBabFbfXD3qdWr3En/7pf+TU2deptbYOK76TA7hjVgcyQhQGVcAFgvdeLBaZm5tjbGxMDlt3uVz09PRQr9f5xje+weTkJP39/bKwKOQdhEEWkbIYENPX1ydx6Hw+z6uvvsqpU6fYvXs3u3btYt++fdRqNVZXV9E0jbNnzxIKhSSlL51O09fXJwvETqeTZDIpISah+yKkGwTcsbi4SCAQkIKDIgoVRnH79u1sbGxw48YNLBYLsViMyclJXC4XS0tLhEIh2QjVaDSkvIAYjh4MBlFVlVwuxyc/+Ummpqa2FAISDsCsTfT97IiZ7y+gW1EbSCQS0sgJ6Yuuri62bdsGwJkzZ5iZmWFyclJCXSJIMNM1RS1ESHKIekq5XCYUCpFMJrlw4QKhUIiuri6pMlqv12UBvbe3V0rRaJomHUUqlZIQXSgUolgsSvG3eDxOuVyWoysF80vMhojH4/L6Ekbe4/GQyWQY2exOXlxcxOVyydnVApLSdR2PxwPcTq8Vxf8jR478eBSBT7/43FuLwLpxR2OhaLdTQyVmbLWjKSpuu41SJkF/Vxc2zSBRaEeC1bUNIr4A2UqepkXF5vFhd3potgzqzRZup6M9LCKdJOzxMH9zDs1qYWLXHgYGBpiLJ8jF48zNXKe/K4ymKfT29hKe2EVTBYtNIxmLUUokuX7pMsePHiW2ts53nnuWZqvF4aOHuXj50mY6e42lpSUOHDhAd1cvNo+H3bt3k8nlKVdr+Hw+KtW2bOwbly6QTCYpFQrkMinOnDnD4YNHaBk6e/fubSsWenz8u4//Fs8++S2uX7/Ozfk5CoUCVoedbDbLoSOHCYYiRHt7uHlrAX8gxNL6KjvGJ7DZLOhGnWvXpvjfPvO/s55IbpmheP311+9Y3Ie39n6Y9Z4EFdQc5QlaXigUkgZd13VisZiEcjwejyyGC6EwwccvFAo4nU6WlpZQFIW9e/dKGmKlUuHGjRvyJt27dy8DAwOycFsqleT8WPHZLl++TDKZZNu2bRSLRTlGUChJAlLMLJVKYbfbCQaDMnJcXl4mkUhQqVRIp9PE43G6urrI5/M89NBDqKqK0+nks5/9LL/yK79CIpG4TUlSFKl7enpktOh2uymVSlK1slwuc/XqVf7oj/6IlZWVLXUA5oKuuVhvXuYsrhMaMheFM5mMdNjm7EFkDgLGEUXVzmNC/C8ej6Oqqqy7OBwOisUiMzMz5PN5uru78fv9beJErdYe9DQ4SKFQIJPJUK/X6e7uplwuy2BBsHpUVSUWi1EqlWQxWKiFCtaQ0+mku7tbZmaqqhKNRsnlcihKu7cpm81y8+ZNtm/fLvdyeHhY0nnFNS+G3Qtmmuh/EQPvZ2ZmKJVKPPvss//yHcCZl14wOo2AplluixDF81brdsEkMWQBta37YbfaGBnop1LIE/B70VWFSjFH8so1VI8LLRDCgh3NaGAY7ZGJ5WoN0Ekmk8RXV/CHgkSi3XT19VNp1nE4HKyuruLQLah6i/Ovn+WBh+4jn8/jDXSzGl+lJxphZWGefCrJ15/8FoV8jo//29/Ebrdz+eoVEskkx++/j3Q6zcsvn+CBBx6gt7eXfKGEPxwBVHr6emnoCr5QmLXYOhaLisNu55UTJ/G5nLidDl45+SK9Pf2srcU4fPQIl65c5fA9h+nv7ePsqVdptVq8+OKL+Pwe/F5fW7d+aZltExM4XS6mrt/g0LHjeHxeMskUVqvG6MQoZ14/x0uvvMqJk69umaG4cOGCYYZ07lYIhjeHnIjjZk65YLT09vbKTltB2xO0zlAoRL1el3NjASnEJdgwQuRrfHwcRVHwer1sbGxIZzE9Pc3u3bvl58hkMoTDYQkLPfXUU4yMjEjYSeC/Yl5sKpVi586dMksQ302k8D6fTzquq1evEo1GicViUl5aRJG9vb2S4TU+Ps4XvvAFyuUysViMZrMpWVDZbJaJiQkJbQ0ODso+CTGm8vXXX2dpaYk///M/37J9/dSnPmWY902szj4AgcV3MvsE00UwYDp7P5xOJyMjI9y6dYt8Pi+7bp1OpyQFNBoNgsGgvP+Xl5fRdR2fzyf3VtQKarWaZAIJmCYajRKJRNjY2CAQCKAoChcvXmR9fZ3R0VGq1SorKyuSDWQ2yqKuVCgUZFFbZDKlUokDBw7I6W59fX1SR0jULVOpFJcuXcJqtTIwMMDExASBQEBmewK6EuJ0IvgR7+dwOFhcXCSbzfK7v/u7//IdwNmXX3wLX1zpKAK/eRG1N0BEAoJvLCrvXq+PWqmA1+PCabVg1Ko89+Q3uP/oPSh+P7WmgqtpI76xgmEoBANhEuk0utIu6JQyOSJDQwxPTFAxDArVtpZ8Ym6WF184yezsHOFQgI/9m19Bs6g4FCuqpnD27Pfwu10UMmlurcb49re/zYF9+/D4AuzZt5dbCwtySEkskUDVtM0o3cnEju10RXtIZLJEenqYnV9kYmICbzRA0BekkM4SX14lsbbEd7/zDA6Hixuzc9SbDR7/2Xfxzne+i7XlNQ4f2s/U1FUcNjt/8V/+M/H1GGNjIxw4eE8bFpq5zq2FBd7+k4+xkUyhoeD2eVmKrRHp7ebv/v5LLK+sbZmhuHjxonEno99ZGDYzgETkb055BYtCQEPi+eXLlwHo7++XMMDa2prsKlVVVc6EFRHU8ePHb5MRXlpakiwjl8vFzp07ZcHV7/dz9epVLl68iKZpZDIZlpaW6Onp4f7776fZbBKJROTNXSgU6O3t5dq1a/T09MiGoWw2K/nq4XCYbdu24XA4eOGFF3A6nXz3u9/FMAympqbQdZ1Dhw5x6NAh7Ha71Ko/ffo0FouFc+fOcevWLTnpSujRDw4O4vf7qdfrRCKRdjCzWfs4efIkZ86c+aGxgDojf2HMxRKOoLM4XKlUMAxDztPVdV1G0S+99JJs9hLRvoAJxUCfbDYr+yRUVZV1Eq/Xi9frZd++fUSjUeLxOGfOnGFlZUUWX0UvhWi+czqd7Nq1i0ajwcxMW6n3+PHjkt8vHJcoXAunnk6nbyvk5nI5NjY2MAyDgYEBSSsW2brA+H0+H1NTU6TTadbX1+nv72dkZITu7m7m5+dpNpsMDQ0RCoWkzAQg5a3FAJuPfvSjPx4OwCwX0Bn1i+fm6EF4YqEfXq/VsNscOF0ONtZWsSo6Pd1dXD35Ivt3TKArLZqqRqtloVRroCo6xWIJzbCSKxdJ5bLUahW8Dh97jh5FdbgoVv9f7t48OrLzPO/83Xtr36tQGwo70AB672Z3k92kuFMSZSsWFVnWZBwlTiaTnMRHY0czJ2NZycTyjKycZJJxEjmRE9lS4sQeK5FEMRS1sCXuErvJZrMXNhrdaKCxVqGqUKgq1F636t75o/B9fRtqUk4IzaHznYNTQFWhlvvd+67P+zwNMmtp3njjDb70pS8xt7KCTk+M5on3P8Zf/eW/zPT4EPF4jNOnT/P4Bx7jpRdepLjZawKfO3sOu9PJPafuZXU9g0Oz9UjMgkHyGxsUt8osLCxy+OghOkYXAxs+f5Cp/Qfpdkzm15eZu3aDPaMTZBeXmJ99i9m33uTuU+9D73SIRGOsprNcv3aDT3z84/zBV/+Av/t3f4311TUevP9+vvgvfpf06go+v5t6vU5/aoBAIEShVCQYDKNqdsq1KgNjoyyvr/PCKy+ztLSyqw7g7dA+O+Gh1nqyGMAR0ZWA0AlOG7/fL/Hb4sKwloWsNMAbGxt4PB40TWPfvn14PB4qlQrtdptXXnmFF198kW984xsS1z0xMcEXvvAFJiYm8Pv9XLx4Eb/fz9ramhz1T6fTRCIRUqkUgKwJC+IvwzBYW1tjYGCAQCAgeeITiYTUBN7Y2JAX92uvvcbs7Cx33323LAvYbDZWV1c5cuQIFy5c4Pjx46yvr3P8+HGeeeYZ0uk0iUSCcDgskUntdptAICAbqP39/ZRKJb71rW+xvLz8/5sDsC5h8AUeXxChCUy8CATEZPDg4CArKysS5y9QT6IU4vF4UBRFHqNms9mTRt2Geh4+fJijR49it9u5ePEiFy9eJBAI8Pjjj1MqlfjBD35AtVqVuszQm7IVdN8ej4doNEqz2eT69et4PB7i8bh0VgA+n0/+byqVknxNQjIylUrJocPBwUEikQiXLl2SAALRmxDZZCaT4dy5c5LO4tixYywvL9NoNGTDv1qtSntXqVRIJpMYhsGv/uqv/vl3AK+/+PxP1ooV444ZgGncus9KOGWj1/zSFAWb0qVZ3SLgd/OV3/4/OHHkLiKJGJ1yHV9fH5WIh6Ddg8flpbCxyc2lZZpmL2rEdDB9+AiZbIH/8o1v8e++/GW63TYZFP7+P/6nvHbhAs889V+w12uodHjzhz8gvZ6RjbdKeYvrl1+XWN2LFy/T7Ogcu+ckk+MTPP/889x14gSqpjG3ME9fLM75C+cIBAJMTO4lFI4RCIVxuTxkaiUOH7wLpWNQWs/zJ1/9N3idKtVGm/zGBg8+/Ag/eP4lhgaGuXz5CvGBBMlYlK3NApuFAv/6X/5zvvGfv86zP3iKUDDC2NgYelMnHk/06pJ2F6bdzvmZK1y+do1MfgNzF4WBL1y48BPoLuse357Z/eRcgCgTiBRdDAk5HA6++c1vykZqq9XC7/dLR2GapswErMRaR44coVqtcvXqVX73d3+Xy5cvS5qFe++9l2effZZCoUB/fz9f+cpXsNvtUujj+vXrMtKMxWI8++yz2Gw2hoeHSaVSnD17loMHD6KqKrlcTmrClkolhoeHpSEBJOqn0+lw7do1vva1r+Fy9XpQo6OjrK2tce3aNR588EHcbjeVSoW+vj6uX7+Opmk89NBDnD17lrW1Nfx+P/39/dTrdVnmEIiVZDLJl7/8ZRYXF+l2dw/d9fnPf/42oyGQPe+UCYhsHW5NOYvfRV9EyGvOz8/LfobgbxKlILfbjcfjodFoyOa3z+cjEAhw7733AvDaa69x+fJlnnzySR544AGpy3vq1CkCgQBf//rXpZEWTfPV1VXC4TCDg4MUi0Xq9bps0rdavb6ccGCinJfP55mf7/XbRBYg+kkiK8xkMhw+fJjHH3+c2dlZBgcHSaVSEslkVbCbn5+nXC7TarUYGxuT5H4CMSYgwgcPHiSZTDIzM8Nv/MZv/Pl3AOdefu4nYaBKz7iLC98qICJuTdNCGKbZ8Hu9YDZxB/rYKmzw0bsP8isf/hDJoAe/N0Q46CV1ZD+BQIqGabBZ3uTKpUvEo3FymxW26g08mp2aavKl3/8DLmU3aTvsmO0uTz/zfX7+w/8DDz/yfv7mJz/Jfzz9fS5ffZ38xde4ev48z33/ezzxkb9IoVjk9ddexeN08F+++Q0efOB+WnqTu0+e5Nq1a1KpKRiOcPnyZfYfOsjCzWX27dvH/MIiz730MuG+KIeOHOa+Uw9w7cYcA6PDuH1ufvTCS6SXl8il0+Q2ClyencXr9uC02dEbdZxqT+83GghgdDv09YUZGxvrDZMZJn2RGOFEjD2HDrGWXqduKMzOXuHCxXO95lLHpFxv75qhuHTpknknwy/2def9O/sF4icSichIsdPp8KlPfQq/38++ffsAJAGbEOdYXV3l5s2bslQgpkSTySRPPfUUTz75JMViEcMweOSRRxgfH+e5557j53/+55mbm+PNN99kaGiIX//1XycWizExMcGFCxcoFApyMjgUChGJRMjlchKDbxg9aUiPx8PQ0JDkqtnY2KDT6dDf38/hw4flIJgY8spms8zOzlIoFDh9+jTpdFoOAwnq6G0jLstd+/fvlzDCeDwuI0/hCOLxOP/qX/0rCWEtFos/80Ewa4lH9OfuxGRpzfbFnIfP5+PkyZP88Ic/xOv1Uq1WCYfDEvJtzQoFlbOu6/j9fo4fP05/fz/nzp3j4sWLFItFnn/+ef7hP/yHPPvsszz11FN0u11OnTrFL/3SL3H48GFOnz4tM0FBwtZsNpmfn6fRaDAwMCD1g3Vdp1aroSiK5J0qFAocOHCAEydOSIWwXC5HPp+XdNamaW4TMvbgpw899BCxWAxVVXG5XBSLRa5cuUIwGJQUJ6IBLaocQs1N2EDBcDszM4NpmvzWb/3Wn38H8MbLL94RLWIlDBP4amsJCMu0sKZphN0ecLRxtmy0aPMnf/83yC2vce9DD9LYWMYT9rNVbjF+6DCG0eTyzAyleou+vhiJRIJMJoOmevi9P/1j1nJlNrrQdDuh0eVjf+2vcPOlGaKhMF957in+z3/zn/j6v/3X9LFOM7/B177yR9y8eRPTptHRezW+vZN7yK6nSafXmJu/Trdr8vrrr/NX/tqv4HZ5WFpa4syZM0zt2789Vq7h9nk5fORIj+K30SGdXcfj99FsNzhx/DhGq81rP3qF63Pz3P/ww3zut/8v0pk0YbcPt9ri8L4DbGRzuBw2Usn+3gRjaZOxgSGGR8aJj46wWMjjVB2kRkf47G/+7/gDvUnYRrNDplT7mTuAnQZA7OudjIWiKBLZI0opn/3sZ6nVauzdu1cOcYnGmc1m49q1axQKBbxeLwMDA1IQ5Wtf+xo3b96Uxt9ms/HFL36Rf/AP/gF33XUXn/3sZ9nY2OB3fud3CIVCxONx/tq21KSI1kSWsbW1JbOM9fV1CoWCJJ+7ePEipVKJ0dFRGawEg8HbYKfWXsbAwAC6rvO9732P5eVlxsfHefrpp1laWgJ6U+9DQ0M9gaNtYRoBY0wkEkSjURkxVqtVkskkX/jCF+SEcr1ep1Ao7Nq+/vZv//Yd5wCEAxCRvnVqWjxuJTITjwWDQRqNBmtra3Ia2nrtu93u2wxktVqVdXS/34+mabz++us4HA5ZYjt58qRszCYSCTY3N6WgTywW4/z58wwNDUlbks/n2dzcJBaLMTY2RjAYpFgsMjc3h2EYpFKpXi8wn8fv90so59LSkiz/hcNhDMOQvYlGo0G326VarXLPPfcwMzPD5cuX6e/vJ5lMEgwGsdvtrK+vy8EvcQwFf5TX66Wvr49yuSy1r69fvy57WJ///Off1b6+J9hAVWutf/vH5BZPjGmat1H6isGLbteQDSbsGnQMFJ+KmS3StLeJ6l0eODzOmR+9yhWlRXJggEZ1i8F4gHOz8yxnN9nUTVzZMqfsTpq1Bt/63pM0alX+4od/jvNv3WBJ7xD2hHj6332dwT3DDOgOBh0O3vjRd/lH//TzfOqXP8TDd92Drnd4/2OP8aUv/1t++ZN/mW984xvouk48HsXmchEO9xEMhHC6Pfzgh8/h8XmJRRO8/4OP4/T6cDvsvPDCC6ylVygXsthsNrYqTVodnUAwiKqqPLOwQLet841vPUkimWLu5k3WMmlCLi+G0aEv6KVSLjDQH9tmFtTxucN06k2C0Ti62831G4u4vR7O3bjI2re/ycTIIHqriROFmrq7gjBvF/2LC9xqEKxNYesSF4WqqtKQh0IhRkdHeeONN4jH4zSbTUmxkc1mWV5elmm5INYSCl4PPfSQZNgcHx/nN3/zN6VgzOLiIqVSiX379vHtb3+bvr4+PvOZz7C1tUUul8MwjF7jfrss1el0WFpaYmRkRDaMS6USwWCQvr4+UqkU7Xab9fV15ubm5OdOJpMUi0U5DbuwsMDs7CzPP/88ExMTvPHGGzQaDUl5AL0J2v7+fnlMfD6fhH76/X5JSZ1MJvn3//7fMzIyImcgdh7Td7usr2eduhUOXUzniyxGIHV29oGsCBrB2lkulxkaGpJEefF4XAraCG1eh8NBpVKRPEHNZpPx8XHW19cpl8uydFOr1di/fz+lUomPfOQj/PEf/7Eckjt69CgLCwuEQiHS6TTRaBS/34+u6xI00O12mZiYwOv1srq6KknhxPzRyMgI09PTZDIZOVgYi8U4ePCgVAoTWs9bW1vs27ePD37wg6yvr8sehCC029jYkIFuINBD7wkYswgmFEVhZmbmNpDEu13vCQcgjP3OmjDcagoCMrKA2yNEu92OaaiYdpWtzRIhExymDYfDRdGsc3TMR/FShz+a+R73Jof4FwtZ+uMBKk2TmeU0umOdkyfvY/LgOPuuXeNX7r6PtxYW6QsGuHjlKvYRJ46+PpLxPr59/iw2j4dI2ORvP/ufoa3z/I9/RLIvxi986HHuv+8U167OEotGehxC4QBer5v5ues0Gg0WF+bZf+ggqCr5bJbBwVQPthkIEPB7eKtQIJ9bx+/30ijVicZjDCaidPQuL774Il6vl/xGkWqjTaVWw6GpNJs1nKpCo9piIBFnz/QUfdEoudwG1a0ao4cOcvDwUWpdA28kxPz8HD4Fjh/eT249S71SJR4Kkdss/sz2WBh9saxKb6JsINJ9q+MXCK9ms4nP5yOfz0unsWfPHs6ePUu5XKbZbDI5OUmpVJK4/U6nw+HDh4lGo7IUUigUmJycZHZ2VvYUBgcHuXjxIv/sn/0z5ufniUaj8qL96le/yvHjxyXlsDDwgupXvJeoDScSCUqlEplMhuXlZRmt1mo10uk0hUJBnufT09M0m83bKJvPnTsnj41oGArsel9fHwcOHACQTcnBwUEURZENzO9///tEo1F5fVgZK3drWWcArHsqBqtEdrXzWhb/KwyXQOGIrL7b7RIIBEin0wQCAfbt2yfx9CKTqdVqPSbbbeOYTCZ5/vnnef7553E6ndx3332Mj4+zuroqET4PP/wwN2/e5KMf/SivvfaaRP0kk0nZPxKfW7xfKBQiHA5TLpdZXFyUE+NiklxVVS5evEgkEpE0D2Kf4RZflZV+wm63y1mFdruNqqqSNFKUK0U5STR9ASknefnyZVwulxyS3I31nnAAqCqmoqBqGoZpYhoGNku5QFzwYtpPkEnZbL3R6na7jd3mptU18Lt92DUVV7dDTVFxdUNUHKA4ctTzXZ4rLnJwMMW1ygYuzc1AMsLw3kkeefB+fvD0dwiHggykkrz/47/IlurgsQ98hHg0xMrKHC6HE6VpEsBGvlbB1bZhuJy0my0WVlf5/vM/5P6jd5HN5xgaGuLQwf08/fRTJJJxHn7wgW2c+BRLa2mSQwP4PG5e/dGPGR0Z5M033wTg4IF91GoVBgdTVMplLl0+z/z8XG+atKtjmF1i/SnWMume4+waOAGPQ8Pt7DUtDaXH8nn/o49Sq9bJV8s0DQPVZqPZapHPZ9k7OkS1sYUa7SNv9i6+YMC3q9sqDLkwAlZedBH9CSMgyN+szkAYEmv2pyiKFOoWo/hvvvmmxNCLqDcWi0knsbS0hM/n42Mf+xhHjx4lHA7z6U9/WurHQg/Jc+3aNXRdl8aj0+nw6quvcs8993Dz5k3sdjuJRIJarcbq6qpkjzQMg3g8Tj6fl3w24kLNZrN4vV6SyaQkHxN48Ww2S7fblVKOPp9P1n+FYXQ4HNhsNqampiS9+P79+8nlctIAOhwO2u02165dY3h4mL6+PikIL6Zvd3tZ5wCsA2ECoi247cX3EE5N9AbEuSH22el00t/fT7FYZO/evVQqFc6ePSsH/zY2NmSz9OrVq7hcLiYnJ7lw4YJs8pbLZebm5mR5DHqU4NlsVp5n4nOqqiobuQcOHGBubg5d1zl06BCAfC0BQRaU4uK9xHcQNX8RAExMTNDpdOQAmqAtAaQjFsdB0EO73W6J9V9bW5MZnsPhYHh4WA4w+v1+OQS3k1n1v3W9JxyAqSqgKHRMMTSioim3tDEFukHgX8WXF0ygqqpiU+1gs6PXG2xUmxi5Db7y9W/w8yce4anXX+OqUuXjx45w+vxFMrT4lQ9/gFZxi0A0QnhogG61QNzvYOzDH2D/oaM0PCqxaJy/8Qt/kf/7T75CKjHCamML067S6WrQdtO0A80GmtPFqxfe4PKl83RKZfbtm6bT7hnaZH+CkN/Hzfk5CoUi5UoFxWXn0ncvEo8nGU0N0jVaTO0ZZ21tjZGxMTkNGElGKdW30Gw2XB43P3jphV5pqOulA7gcLrSujkPtohgdjh25m2PHjpHaM8nIxB4KxSL5Sp3h5CBK0MfNtTSvffcHjEQCLOVXCHp8RAJ+Am4v1XqNzUp5V/fVmqJasf5Walyr0RfIH2H4hfMQxljUf0+fPs2JEyf4zne+A8D+/fu5dOnSbRewzWbjwIEDhEIhcrkcd911FwMDAwwMDBAOh/nkJz/Jpz/9aUZGRmQjUNDsWgeYLl++zO///u8zOjrK2NiYpHxIJBISay8ar4FAQKbyfr+fTqfDoUOHZKlBNDWFQRG9jZmZGTY2Ntjc3LyNOE0cm6mpKQ4cOEAqlSIajZJMJmVDNBKJUKvVOH/+vEQ9CU4gwSG/2xmAKPlYm76ihyOyABH9i+8j6DAEfFv0dDRNk4NSghtL1L+tcMtKpcLS0pKU9hwdHb2tAd/f38/AwADnz58nnU6TTCaJRqNsbm7Kc1F8ZsMwWF5eZnh4GKfTyZkzZ25r9oqyWyqVktWHWCyGrutyQnhwcJBgMMj6+rocvBNT3S6Xi/7+foaHh8lkMpIXyGq8t/sychJ6c3NT6lybpkkwGCSRSNBqtVheXpaOXGhAi2vl3a73hAPQFZckfzO2xeG7ZgebqqLaQDdNVEVDczmpd/QezG3bA+sYKHaNir6FvWpDRcPUu6xn88RG9vGlV5/Dq8D/+vEnmIgPY5pO+vpTnDp+Cr1ZxhsMEe6folavMn7PSa5evsCV68vsOXIM0+bhN//5Fxg+Ms2v/sZn0ItZpqammLs2h8s0MfUOLc3BySNH+J8+/ou88P1n6PM5OHz4KKvpNZp6h4PHT7CeztDnC+EMRol3Oiga3H3PKXLZDJ1mg2ZbY2rvXuzuHg/IQCKFz+1H1Zx4plwsL97k7AsvYlNs1Kpttrod7IDX1HEYXSJ+L+Pj42y1uyznSwwfT9C0B9jUS1RNk3Q+Q7TiQSkWePy+E7hdDozmFLVGtUdu1azjcNvw+lw/k/21lgF2Ick4GgAAIABJREFUEvlZs7ydWYCoIQvjUq1WJcTyxRdfxOFw8IEPfIBSqUQsFqPRaHDixAlCoRA+n08qOQ0PD/e0ErbZFbvdLr/4i7/I4uIiX/ziF2k0GqRSKRYXF+VndTh6OhD79++Xg0piuGxkZIR6vS4nUQUvkYj2RV1byJpOTk4SDodpNpsoSk9HIBQKSfFxXddlViDKYgICa536ve+++4hEIvJ9NE2T/QkhSVitVuWQU71ex+12S4O2m8sa9VuNkcgC7qRraw0IrEasWq3i9Xol7n11dZWZmRlZBhHT30JrQSBoxP8NDw9LcZ+9e/fywx/+kEceeURSZIuauaIoPT0PXefcuXMEgz3W30ajQTweR9M0lpeXZXP+xo0bUqRIUEBEo1E8Hg8zMzO4XC5CodBt30doQ9TrdVm2A2RwIfZFUH8oSm/yeWpqSsqPigazYI8Vn1/oBlh5s97tek+ggH589rycGNUEqkc1pZGwbTOAAmg25TajoG3zQ6sooGrU2zpmqUwnn+fbX/0jPvErv8xmLoPT42Bs3z5yW1XamoOA14bDaaNeKtLfF8PjDbBVrdMwq9TSeUqlLZITkwSHhml1DdZmb/JX/+bfotrusGXq+KJhTFUhfXmG3/9H/5TFmRl+7kPvZ2l9hX2HjvYMRCRKx+iyVa1ic9hZWV7E7/cTjcW4dv1qj7vI7SQWiZBOr6J3e5FouVil09TJF3P0J2K0GnWazSaX35plYXmVcqNBo1gi7PGhN5ucfOQhPvbL/yM2XwCP18fMzHWW1tI8+e1vcmNhjrDTzdHJaf7Sxz5CNBpB11sohkK91qs9N2u9OrXebvO//OPf2zW0yFtvvWVap313Qj0FdFJEZmJP79QsbLVakr736aef5oEHHugdy20EhjBArVaLcDhMvV6XswGCjEsYR4fDwd69e9E0jaWlJX7t136Nubk5SQ3tdrtptVp85CMf4eDBg/j9fjKZDPfdd59kdBRZjKCaVhRFPk9VVUlcVqlUpGyhQLoIVTvosVfOzs5y5coVms2m5LUJh8M88sgjfPjDH5YImPX1dc6dO8czzzxDNpul3W4zPT3NRz/6UcbGxmTmIphIBeS43W7zmc98Zte5gKxrJ8+PMPrid3HMgJ9w/KK8m81m8Xg8VKtVmfmLYxkKhSiXy5imycTEhOzRCCW1aDTK4OAgW1tbrK6ucvr0aba2trj77rslUkxw+6TTacrlsnSuQkhe13WCweBtJR5d16W4iwAUCIfkdDpltiPOaZFxBAIBifJpNBpUq71g6/r169y8eZNgMMjk5CR79uzB4/HIIUIrcqrT6ZBOpyVjKnBbCRx413oA74kMwFRUUBRMRZUZgKb0ykIoCu2ugab26v+dbhdVtYGioChgGNsnmd7BQAWbnWCsj9W1NC6Pl7UbS6yuLfHE3/okhewG8dFhTKeblStXCIfDRPwR/p9/8o/5Xz/3W2x2azhNhXx2nfvuex8/fOElkvUG/cOjhPs8/NzD76OQ3yQV6yeXzXLo0CFmJyY5dfdR7nvfSex2Owtr61yfvUwinkTpBlhdXiEQDJMvFUjE+9nY2KCgFhgYGmF5cQFH10E6nabRaDEwlJL15/7BARrdBu1OB5fHy+LiMouLi2RzeeqbFZL9UVxuO4996AMcf+ABdDRahsL6yjq+QIhn//CrNGt1fMEA3VKNgN9PNp3B5/PgDfhp1Os4PG5oNnEYHlTVhm7bbVXg29fOJr+4yK1OYKfxF8/TNE3C4QS1c7Va5eTJk6ytrZFIJAgEAszPz9PtduXt0NAQyWRSCnNrmsarr75KOp1mbGyM4eFh/sN/+A8888wznDlzRnLAx+NxJicnGR4eplar4fP55GTowMCAbOQJ3vhsNgv0ZhIAOaEqJP5EA3NoaEiWagqFAvl8Xg4Zieaj3+/nr//1vy6Ng1AhK5VKfOc73yGfz0uDBJBOp/H7/cRiMVkSFdQYwgDt5roT/w/cKvmJ8p5w6Nbau/gfKzWEGJgSHE6iryHKvVtbW9RqNVKpFPfffz8vvfSSlIwUUbFAZCUSCSYnJ/F4PLzwwgt897vfJRQKyWMs2GAff/xxqQuRTCY5ePAgxWKRq1ev3ubA2u221H1otVqy3CP6HOIziPKRKEflcjmuXLkiHYyiKFy8eFE2pYVTB5ienqZarWIYPU3nYrGIy+UiGAzKEp94fOdsxbtd7wkH0FW2TxZFgW0OoC4qYiZV0TQ6RhfTUDAUDROlBx0CNFWhi4Jis8v/75pd9t91lJWZGQyvg/v/ws9TWS/hHk5RbjRw2mwcvesusqur/G9/52/zlz7+MTbXljEwaNRN9uzdy/z8DbwKXDj9PbQT9/DG/Dx/59c+RasDbq+XTqM3Hbgyv0S4L06rXefc2TOEfQ6+++xTbBRLRPoSHDtxN5nMCmMjg9QrRTxOjW6nTadt4vO4sWsK/amR3hRgsUQynqBWb1JvNZma3ke73WYjl8cb6uPBRx/jySefBKVCXzjCJ37lkwzv20el0cXpDuAKhLk2M8f/+yf/kZWVJarVLfpTCUL9QQb7kzTqTVZW08QH+nuRjt5BsTmxOVqYnS6N2u7WincOfsHtKlEiArSWfXb+v3XCVKBeDh8+LHl1xEVvt9sl0VulUuHNN98kGo1y5coVPvrRj2KaPX54IbqxtbVFo9GQ9M8f+chHeOKJJ+TF3+12qdd7mVc2m8Vut3P69GlmZmbo6+vj7rvv5sCBA7JsJaQErVh4gVYRU6WC7rher0tmy9HRUZrNJi+99BLFYpGjR4/yqU99SkZ6Aut/9uxZvvnNb7K4uCizm0gkwtGjR4lEIjLKFGgVEUU6nU5ZMtitdae9FMtq8N/OUO2EB4sIvlarSflEp9PJ2toaNpuNWCxGpVJhfX2dv/f3/h5PPPEEjz76KK+//jpbW1sUi0VyuZ5mtuDK8Xg8PPHEExw8eJCVlRVJ9SFomgWpXCKRoNPpcPPmTSYnJ+WMgBgeDIVCEnAgzsVqtUqr1bqtWS9KOU6nk2KxSLfbZXBwkG63K2klkskkw8PDMlNzu92kUimWl5et0p0oisLq6ioLCwtyvsDlckmKD2sG8G7Xe0IRbCGz8TlUDVXRUFQNVA3UXkkHQFE1TEVF0WyYgKkoPdSQqkoEkalqKKhoqDg1DbPTxumwk6uUiA70Y9SbaD4vMU8Is64zl14hFAvwxCc+gaG6WHtrls25OVzhCIbTjt3p4sKZs1y6cAZdr+CLxAk7vPgUGw5Tk6pNr126iM/r4a033+T973+YTH6d6X0H+Pb3nuXFN87z3JmzLK0sMzkyzPWrlzE6LQobeZYWF+h22nT1Nl2jg8/npbCRo1qtoNg0as0GmsOF3enC5nQSDEUIhMJMTIwTTcaYPHCAcrXKxPR+fMEIza7J09/6Fj8+82Pm1xbRXDYq1QrdVptkIsqh6b2cOHGceCKO0+tBMRU0mw3NrvWYV2020BT2Hz/127u1r9ls9nPiArEOgVkH/eAnycOsGGcrftyKKtra2pJau6urq4yMjNDpdFhbWyMYDHLvvfeSSCQk86ZhGFInYHNzk/n5eQqFQk+QZ7su22q16Ha7+Hw+bty4IYcDBwcH5fTp/Pw8Z8+e5dKlSzQaDRKJBIuLi1SrVTm2b61diyEjERWLhrEQGRGsn8lkknA4zPj4OA6Hg9HRnrB4Pp/nu9/9LpcuXWJ+fl7WzNvtNqlUqoc2O3RIZjnWaXnxoygKBw4c2LV9FYpgO/dmZ/a20zns3GPreWAYPR1cu90up3JHR0cl66bgyk8kEpw/f57f+73f40Mf+hCRSERGzKIkND09LV9vfHyc0dFRxsfHCYVCJJNJPB4P9Xpdlsvm5+epVqu9QU7TZGxsTNKAd7tdNjc3JfxTGGArrFmUoTStpz3d6XQkIZ2I6CcnJ6WGgKZpHD16lEOHDkm+KlEus06t9/X1yUzDmh0LpJWiKDz66KPval/fEw5gMZ3/nKL0KJ1VeSJtn0BKryRks/VqYoqmoYhxMUVFRe39ripgqmimiWJ2sasm3VYLv2anmN/AsNvwe32UKxV8Xh/6VgNN6ZCvV3H1Jdg/Pc43v/WfiA8MEEmlyKxl0Os1Dh6cotVp0heM8fql8+w5so86Oh10ookIlc0iqVSSSCzKwtIyC0srvc9nd7CS32AlmycR62NjdY0Deye5OnOFRH+Ser1GXyRMp92C7SjI5+2l+4lkP3aHk3bXoNnSyaxncbs85HNZuobJVqNKPB5nfHyC4aFRHN4AT3/n+1y/NktDb2LaodXtUMwXGB4YYnxkiKGBAfweDy63C5Qe7FLRVEzDpGt20bbRV9NHju+aocjlcp+zUnzDT+oCiCjf2ieAOxsPEV2L8kAulwOQ0MxEIoGqqmQyGRqNBpFIhKmpKSqVikTGQM/gjIyMoKoqP/7xjxkfH0dVe3zv4jOJ4SrBQ5/NZnuMqleukM1mqdVqVCoVrl27JlE9tVpNRpoC12/VpgWk3GW1WmVzc/M2xI/IEPx+P/F4nKWlJV544QXW19dZW1uTTV273c7k5CT33nsvU1NTknXUirARx1AYlunp6V3b15deeulz1jq+eK+dTvvt9nHnEnV+qxqWpmkUCgXZZBWsm319fZKe42tf+xozMzNyRkPU5AVbajAY5ObNmxImK+jExT4IzV4xTCiyyEqlQjgcJhwOS4BBMplE13Vp3MVeW52tQCiJzyMcyNbWlpQLFZxFDodDor/K5TLZbJarV69y9epVVlZWZLlSwICt15EVAvpuHcB7ogRkXT09KhNTUTDoeT1DgY5hoNhs22WeWydWV0SGJpgqdFHRW026ahdCfrw2BytXN3EGVdbSOfYeOkCt1aJvdJBmtUb68ltMTLspOT38lb//OxSzeUyHB3swQGJ8mMLSPC7VyaHpCXSjTXV1mXZTZz1fIGbXcHSrzF45x0apQiqVYnggid2hcn32Mm6HhmLCzPwS+UqF0//kDMODQxS7JvlMmqHBFLFohD1jY6xVi0xOTaPaHWTyG4CC3eYFTSUUjlJs1rGHoqDr/NzdJ3jh5R/TLGyxdX2BP/3TP+1BySoFEtEYQ+E+xiNR/sI9J3ng3vcRDQXxer10jN7Jb9BDLWiKCXbbrYtV+9mcDtbmn/V3uB1SuPN+YchE9COw3IqiyNqooAcYHx+Xw2KqqpJOp1leXmZgYICjR49KMRXDMIhGozID+OAHP8i5c+c4cuQIiqIwPz+Pw+Hg0qVLxGIxOfwjhOPtdjvDw8NcuXJFlhY2NjZQVZVjx45JTnefz8fExIRs8N24cUMSjQnct8PhkNG8y+Xi+PHjXL16Fbvdzvnz5zlz5gyzs7MywpyamiISiRCLxZienmZkZESijqzDVHArqxIC6bu5rEZ9577tzAB2lonE8633i9q2iP6FJKcY/BNom7W1NVRVZXx8HIDHHntMYuUzmQy5XK4Hn95WSysWi1IxToj1BINBSSYn0EMbGxvk83mp5iYctmmaRCIR6vU6a2trhMNh+vv75eSv+LzQmxsQ6CFBASE+mwhQAoEAQ0NDXL16VbLGbm1t9YSotifD9+zZQzgclvBTazltZ09lN9Z7IgNYWMt9TjR85VTwjufcOolu3VrTTlNRMNEwFTAM0FQNvdvF63XjDfpRVYgmYrg8HlptnWKpisPlJJGIU601MFWVdtcgEe3j/Ms/otao0zfaz+VXX8PRMjn9yktE++OEIxH+8Mt/wMEjh6jXa5x54XkCPj/VrS3Km0Ve/fGrPPfS84RCYdodhdHJPWxsFtkoFKjrBnW9zezcPHaHg0Jhk4DPR7lYpLRZJBAI0ReNcunCJex2Byg2KrUaiqZRa7SIxpO43B4y5SqK3c3c4jI3FhepN+uUKltMj45y1+GDHDt0hJN3382R/QfwutygKdgcDjSbDd3oomoqiqr2siZFwVSgYxpgmuw5cGRXMwDr3t2pwXunCPHtokdhNETGIFgvxdCMYRhSxk+Is4soTVA7C+pfoci1srJCJpNhaGiIubk5SS++sLBAuVyWDdQzZ85w6dIl+Z7hcJhqtSrRKM1mk4WFBQn/E0pkQs83FAqxtLQk6/OtVksaQ6/XK9EvptnTBRD0wu12m6GhIU6cOMHx48c5cuQI09PTctpX0KJY6ZWt2ZQwZhMTEz/TEtCdatLvVKe29hGE0+p0OrJ5LZ4jSiuC/15VVRYXFyUjp67rrKys4HQ6pc7v0NAQ6+vrkghwc3OT6elpSc4mmvjlcploNCob54KJUzT4FUWRkrOxWIxqtcrc3Nxt0Xgmk5Fyn+J4i+MheIAAed6srKzQarXI5/Osrq5KVJjP55MUFm63+zatjLfruZimycMPP/znvwS0sNarFYulqqpEAFkdQ+9WBUXFpCcag/hBwVDpIYhUFQMTUNHbTVBga6vCzZuLeP1+PD4v2XweTVPodLv0xaPkN/M0200U0ySXyTA0PkbdaLOZXueHz/6A2OAAX/53f0Syv594NMarZ84Qi8epVIo8+fTTxJNJiltl7B4PxXKZ1Uyaxz74QS68dYVwKMJmsUTHNGi3dWwOBxsbG/h9vl6ZyuslmRropa6BAC6Xm0a9zsLyGn19UboKmJqGx+9ndS2D5vDSaDVoNlvo7TblQgm/z8u+yUmOHD7C8NAgfaEwNpsdr8+PqSm4PB5QVTSbbftYqvR66QoGgKmAqrJn38Fd7QH0tu0nld3uVCve+bydCBIrTFQ0zIQIRzQaBZDoGlFKqdfrUmBdUAmLmur169c5f/78bXC+brfbI+ibmuLs2bPE43EWFhbI5XIsLS2haRqHDx+W8E/RNxCwwVwuJ6eBheHKZrNsbm7KHsbS0pIse4ihN0FVYaU+EHxGd911F4cPH2Z0dJR4PI7X65W0z6IWbC0lWZc4nuPj47u2ry+//PLndkb3d+oDWMtCVmO208Hfaf8Fukf8reu6LJOJJq6VG0yURTKZDLOzs5w6dQrDMGS0v7S0xMDAALlcjldeeUV+nuXlZYnY8vl8rK6uynkNVVWl0I9QlxNTyz6fD7/fz9jYGHa7nUKhIOkexLCfIKqzTmL7/X4qlQqbm5tSyU5IVYp9tR4vuH3a2oqeMk2TRx555M+/A5hfzX5u58lgKMjo1MDEVHo2yqR3H9slInFrKpbMQQFDUTAVDVSDTtcgFAoT7AtTKJXxBgJoDpVKvUa93UB1qJS2ymxVSng8ARqKQlVvUylX6E8MMHX4CF/7xlPY/QF0E3z+ENFEks2tLeaWlvmrf+N/5oUfv8qDjz3G+maB2dlreHw+kqkBhlIpTp68h5XFm+Q2NsAAXTfQOz1nMDQ8wNDAAJrNxtLyCjNXr8moIzk4gmqz4XB5wGbn+vwSNocDvdWlWt6i02qxurjIYGqA6em9vO/eU6QGBvH5AjicbuwON2h2VKeTLmoPWaXaUBQbpqJhqBqgwfbfKBp7pvfuqgP4szYJd/7+TlGPuBUNW0H8JWqlolEKyClil8tFuVyW6AvTNBkaGuL06dMsLCzQbDYlwZvNZuPSpUscO3aMQqEgtYYrlYok6xIIHOGAhEyhMBLDw8MMDAzIyF8Qf7VaLfr7+29L4wVdtMhgSqUS2WyWUCjEQw89xLFjxxgYGMDn88kJYCtx3js1Y8Xt6OjorvYAdu7ZzvXT+gDWz7lzQAyQin+CBVjXdZrNphwYFM5SOEBAoqCazSbLy8sEAgE5/Of3+5mfn8fpdEr9ZqHdWywWpZEeHR2V5SNFUWSJRziTUChEsVgknU7L6W3h7IWYj+gBCZ4hEQgIVJcoSTmdTjlPYP0e1rLP20Fuxd//XTSB51fXf+JDWL/q7V/cvOOPooBq9m57z+9FtIoJNs1GrVqj2e5ic7hYy+XpdFRQ7BioFMsVNLuLvkicbH6DwlaNeGoAp8uLYrOzls0zNDbFi2fOkN0oceTwXZy7fJnF1TSmamdhfpG5GzdZWUuz/8hh6o0W9UaTwYEBSpsFSoU85WKBPSNj6O0WzWYbFI1mq0VHb+PzunB53NSbbewOB8VyiXJli9JWjUqjzsDwMNlCEU8gSAeTcnkLXW+yuVmgVC7i8fs5fOwYQ0Mj2J1uNM2OotnB5gDNjqLaUFQ7impHVeyg9JxArwwkUFc2VNXOxJ7dKxWsr69/bufF/9NO6p33WyNN67SpiJCsmrLValXyC9ntdskeKqgGrA4CoFgsEo/Hefnll6nX60xNTbG2tsby8jLQI1ybm5uTAux2u50bN25IimlxkQujIyJHgTDxeDyyfyAGskSjU/QxxO/tdrs3jKfrlEolORR07Ngx+vv7ZalHNB13Iqt2DtuJbEPcNzw8vOsOYLeXNcuz0iaIfpAwrAIIIJ4vyjZer5etrS28Xi8rKys0m005lbuyssLY2Jg8dkNDQwwPD99GKifmDwSCRzT6rc5WlB4F1Xg4HGZra0tCNEVPRkzvCqI/Ud4STkzMe4hegkD2CEdgdaA7syfrPv93kQHMrWU/h3qrzIP6k5HiO0U48kBtN5BFn0BRFOh0wQSP241imticDiJ9MarlOvl8gUarRbvZxjQV3B4/1VqFYCjCej6Lw+3CY3cQjfTx2rnzZPIb3FiYp1Iu43A42DM9hd8T4Mb1G2h2Db/fz1alwuLSKgcO7OfyxYuoisnc9Wsc2LePmzcX6QtH0LsG5UoVBahWakSCXvr7UwSDQc6/+SYOp5N4PI7LGyAYCjG3cBN/OEK91aZU3EK1KZS3ymxsZOkaOnsPHmJoZISgLwCKgqpqsmxmoqKoAk21fXzNbQer9tBUiiynKYyPj+26A9hZI367mrF13Wmfrf8jGp5iMldcJLquS4SNoijSAAvSLdGEFTVZp9PJ2NgY8/PzLCws8KEPfUjW3oVxqNfrKIoiVaOECpSo99+8eVMaXDEcJmrIju1y3+LiIltbW1IXWgjUNxoNFEWhVCrR7XbJ5XKsrKwQDoc5duwYU1NTeDye28jw7vRzp8fEcVNVlcHBwV3tAex05O+0t9aSxdv9iOcBtyGZrKyxYvhNZHRWUkHRUxF9H9M0WVhYoFgsSm1dodRVKBRYW1sjl8vR19dHMBiU099CF0BM+yYSiduid9FPEgRwQrBFnFMiEBD6vz6fj1gsht/vp1qtsrq6SiaTkeeGtblrPRZvlzXvLAH9d4ECMk0Fw2D7QPR+V7bL/2Ciqor8W1FA3TZcQM9wofRKPmbvXsUQBwgMExyKStfoYHc5aTbbVKs1DDtEB3oMjpFYjEwmg83npVBvsSc1xGatTtdwUDRNHM4gB0/dz6lHHuIP/82XcGoqmVwR07nGysoSJ0/dx8MPP8xTTz1Fvdkm4HNy5fIF8tk8o8OnuFgqsrR4k2Q8QkvvsrGxvh3dAJrKzOIydVQ53m8LhGispvEGKiRVUO0eKls9eTiX08H5s2fpdBVc3hBTh05x4MhJQvEoimbHLlLW7XNGURRMo4dHN5Re5Guo2wMnpg3UHvuqafZud39vb1EEiAvIGslb1zuVFHae+DupowEZXQ8NDUkoYKFQkGl+o9GQtBKCwVPXdY4fP06hUODGjRu89NJLAAwPD0s5R0EjkUwmuXLlCvl8nkOHDtFsNimVSuzZs4eVlRWWl5dlCaNerzM3NycpLFwuFz6fTzoogVgSovGAJLSLRqPs3buXvXv3SlTTnaZqxbEQfQTx3tbja82cdmvtNEp3evyd/t65xPlh7V9Yv5egcdB1XRp6wfpqmiZ+v182j8V5IphaRbNVNIc7nQ4jIyMsLy9LIR9BzJZKpWQzttFooOs6y8vLkmpb9HrEZ8jn8zSbTVqtlpzK9ng8km9K9HlEYCAkLMXMhig7ievC+t13OlFxDHd7qO894gBuGYh3qheLaMb6PHmguuYtFNH2axrdNmarSbvbRrOp2BQV1TRwuT109DZD22RhzWabWDyFiYqm2bm5tNKL/No92KHX7SGUSFEqpPnVX/803/zPf8qBI0e5PjuHw2Hj9778h1xbXSIa6cPnj5DLrPLQgw+iKCbnz73GqXuO8daly4yOTVAobzE4kGJ+OY2q2dE7Hcq1Bm/NXsflcuHxeIjEe5hjt8dHu92hUsxu00XUyOXXadcatFHxKzacgQCGzUGradBwG2D2HKRNEYbCRLHZt0+y7WNlGGAYKCby/tse/xnu605jZC1jWJ9nrYPujIDEpK7IAMQ4vjCymqbJ2quAWwp2TqfTKSNGoSBVrVZ56KGHJI672WxK6ccf/ehHuFwu9u7dSyaTYWpqisOHD5PJZAiFQrdR/IbDYcnwKCZAFxcX6evrk/0KRVFknViwXtZqNVZWViQKKBAIoCiK/JzCAVjRMTuPmbj/TqWz3YQN3mlP3u2y8t+Ino3YCzEpLvZL0IJYs4ZKpSKPid1ul6U3MfmbTqelYY7FYrz22mu8733vY3R0lCtXrkiltvX1dUKhkBSkb7fb0rkIKK3gVxKzKEIIXmSLwngLLighCVksFvF6vT3dcq0naymuBavjEutOx/ftsq53s94bJaDV7Nt+iLeLJnY6CI3tEpKp0tHbdPQWut6mUymhmiYhv4duR8fjcWN0OnjcLurVOigqHp8PwzC30/0amqri3k7hJBlUt1cuqNcq+DweKuUSsXgMum0eePQhXv7xq6ytZtBMjUa1J0ZSKW9yzz0nmJ2ZYWpqGo+vJ1s4M7dApdbYbmibdDoGqqbgdLmIx+NUq9WecIiq0m7rFDeLdPQ26bUlCoUchXwem9ON6nRj8/rwegLY7U4cLgeqZkNBRdF6pR+F7ZLQ9vCcoqgya0K55TTF7fhQatdKBZlM5h339e0w5DvLCCIaFEZViGULpI8YvhF1Vl3XbxuesZaJAoGANGCNRkMiacSkcH9/vxR8OXfunMT1K4oiacm73S779++XU72a1pM1zGaz8sIWkZowDOJ8FYyfAglSqVS4UKbRAAAgAElEQVRYXFwkl8tRKpVQVfW2Rq/4fFaBFasj2Hl7p5IQQDKZ3FUUkNiX3XAEwmD2ZFEVWcKxZgbiVqB+AOkYRSYgykHWHomqqhIWrCg9OU4hqO5yuUgmk+RyOSKRiOT8qVarEnYqrn+n0ylfT0BuO52OpIoQ38Pj8dButyWyTGSPgpZDTH+73W557HYKXe0clrzT/or1bmGg74kMYGfkv/Pitx4UKxOodZkYGKaCaZgYnS56s8FGLoOnqzO0dwpD7+Cyabgdduh2cLmc6LqOyxWgY0K31cTlcOBxuVFVlUQ8Tjqdlhezqvamjg3dSTQWx6EqFPIbJBNxrly9wmAiRl8kzvPPvcz7Tuxns1hifGyQN944x57JCRw2B1dmr2Eodnw+Dw6HjZbega5JNN7j+kinMzKa6HQ6rGbWUYxeiru4cBMUg2KphGIoNDpp6noXf1+MS6qTaq1OvTtMPNpH2O+j2zFx2TRQTBTTvGXkLb+Dhmlu19swe03hXVw7DfydotOdz7/TY1YHUC6X5dCM4FoRBl5cZCL1FpObwikoSg/VYY0YBQ+8aCKK5qHH4+Hee+/l1VdfxefzcfHiRUnTEI1GuXHjBsFgUBLQlUolWXIQ0bsYOtrY2KCvr09Ggel0WjqFXC53G9mX6AkIAyEyBqEhK6L+nVHwO63djNb/rK/7X+McrAN/ollvmqaEfgqIrajxA7dF2+I1rFmRgF+qam/qXegBl8tl1tfXSaVSvPXWWxw6dIjR0VEWFhaAntyoQPoIDidAZo+ARJRZ+zLCWTcaDdlzErMgotdkt9vlzIHA+ovej9UJvF2/7E5O4d2u94wDEF7UmtJa109Dj3S2HYBiqtSrW5itJkvXrnF87x4KmQy+gL/H395u4XO7aLU7aCrQ1dEAt9LBYbZxqAqaXUM1umgKuJ32nrZv0M/y6hIYXUzDILfew3Z7NYXBSJSAo8ri2ip3nzzGj370Cr/0iV+kXKvTNU2KpTLjoxM43H4WlpbomjAxMcGNGzfoYtBs1Gk1G+zfN836+roklWp1DZqNBq1Gk3KpBIqG3jJABaXRoLOeZZ632Ngss5ZLM7i2h7tPHENJpfD7vNhMA4dqw1R2pI6mCaLmryi3egC7nF5anfWdDIK1PCQc/Ns1EA3DkIyapVKJwcFBSqUSgUBAYq8FHYJYglMGbomr7Ow/CD5/m80mja5oAjYaDcLhsMwULly4IAd16vU69XqdVGq7eX/+vBwQE05A13Xa7TaTk5Nsbm5KIyXeV+gAALJpbBiG5IYRtASZTIajR48yMjLyE9Gt9bhaj7M4llbDspvr7Qz8zvcXx/qdHIIw2vl8XjZjRVZgJVyzvoeI+MV+Wp8jsgQBvxREcrFYjEQiIcs4e/fu5erVq+zdu5ehoSFUtSfRaBg9da+trS3ZB9rc3JScQ4ZhEIlEqFQq1Go1IpEIfr9f7p9wQAJ2bO3XAHJwEXq00YKmXPyvOGbWdadrYzfWe8IBwNvjvXfeZz2Zbj8gJr2ItgcRy65n6IuE8bgcMlJr1Kq3okEUjI6B3m6jaQqK0cXQ26gKdHWdRqNOW29hbBuNbCZNsbCJ02HD47ATjUYxO11uXL3M6OAAr509iy/cRyQSwmaz89RTTzE8FKc/0UdfJMLMzCzVRp333X8//+JLX8ZU7bR1naDXhaH2Ir5sNsvExISEIto9Poxul1xlHcVUgC6ggmmg2TQ6zQbFfJ6aYVLRm5iqm/61BLG+CF6PG9Oyve90Au2M0HdrWY33zhP6TnXpO2V+4nerkIyAeYZCIQkNtIpkiKhe/I/1NdvttvxRFEXiwcX0ZyqVksyf0WiUfD6Pw+FgenpaIkdWV1fxeDxSFUzQE7z88su0Wi08Ho+sG4sJ03g8TrFYZGlp6bbvdKfvLARdhLC4oJQWGYUoCb1TBnCnfstuLmvD1kqd8E6f505L1PlVVZUZlOjr6LounyOeJ7IAETVbnYBpmtJAi+MrhGTW19e5ceOGpIkQXECTk5PcuHGDyclJ+bmFHkMkEmFzc5Pl5WXZRxLlIV3XJfNqo9G4LSOwQpPF5xJ0F+12m1qtJg2+uEYE0kigjXYu6/Wwq/2XXXuld7EUY/tC7RoootSjvP3koNWo3Gr6gqkYdLodKqUiSreDR7Hh8LixO22otu2xckVBRaFjdHvIIXuPatrh6tXsfKpC1zCx621cRpd0ridSUUivU9lcxzQ6mIpBanQcbzhMW69hoNA/OkImk8WZWeUTv/RRvv/97xOOJGibGk8+8yIDQwPE+gd48l/+WwaHUxQ2itg0DUOz02zU6G73GGZnr9HRDYyuQr1UFUdoe7IZehhOG922jgIYrRL1fJN2s4Lm9tO/nmRwqNfU0oIhbC57LwOAnvQm9JhATQVTEY0nE9M0UH8GDuDPunZeMDvTXQG529jYkDVdEeWJ5+xsfAoDYl3Wx4TEXygU4vLlyxKx0dfXx9GjR8nlckxMTLCyskI6nebkyZNcv35dlgJeeeUVNE1jfHycS5cuMTIywvr6ujw/RYPS4XBQLpflsNc7GWbxWLfbpVaryYwwkUiQzWZlk1v8wO2DQztf52exrN/vp62fZqxE6aTb7crZBxEdWw27VdVLzAKImj/cqqOLYT0xASwChOHhYfx+P0tLS/j9flZWVlhfX5eiQQsLC0SjUdlfEIZaDBUKqgkxqSvmMoQT0nX9Nt0Fa/YlzkuhGyDoRkTjW6CErA7P+v131v3vFBz/t673hAOAP3vNUDFMzDuUqk3TpNNtU69Uya2uom8VGUvEcTl6ZYFms4nT7kDddgCa0qOVdmoatFqojl5Tx6GZdFTQVLApEAuHepjvxhY2u8riwgo2u8bi4iKJ/gG8Xh+Z9Br3njrZQ4b4fSytZbnv1ClOP/8cXROGRoZYzqyxVW/wC7/wc5x9/TUSydg230tDRg6l4pZM67vdd7q4jFuOr2uCqdOtVCmlV7npDxKNDdI2nTic3l5UZNsusdi2SxBml44phujeOXJ7t8tK6vbT1s6SgVhiHD+Xy1EsFkmlUjJiB2St1xogiAhZVVWJKLEijkTTuNPpSEI30eitVCoSCiiYIA3DYH19nUcffZTTp0+zsbGB2+2mXC6ztLTE0aNHJQZdDKSJXkC5XL4j1vunHTfT7GnHijmCaDQqHZ/oZ1jRMzuJ9XYe191cu/GaoiZulcAUe/Z2Duyd3lfANIU4i8vlYm1tTQry+P1+KfDT398vsyzB9W+aJl6vV0brgUCAQqFAMBik1WrR6XTweDwAMoCwlhbf7rNZKxZWZyYyRa/XK9lDRd/K+l3vZPx3a70nHMDOdB/oSUOaoJqA2Zvw7cX7BqrZQ7cY9MaYTBMU1QZdg3qxSCmbwd5p0b9vkq6uU+908Pp9YN8+mIqCgoam3GKY7Oo6ds1GS9FRjC5OzYnLbkM1DTSPBzWVwueyUy5ssLy4iKqqbG3kcLp7m2hTwON00GzVWV5exOcLcPLkSW6urBIMR3D5epOF169f57777iOXy/dYAw2DerWJ2Nf/6sjNBLodzGaDzmaB1fnroLmp1GrYVNBSSUyzd7KZRhfV3IaGbkfVtxmln0EG8HZNrDs9fqf7rXwsGxsb1Go1yeej67qMFq1NXdEwFvdZYZSiQSxKCtFoVDZshR5so9GgUqlQKBTYt28fAJFIhPX1dTY2Nti3bx9ra2uYpkksFpOC5kKIvdPpUC6XabfbcmL1v6UWLwKXzc1NSQssyiPW73Kn17Yapd02Gm/XqBeP/VmXlTpDHCtBp7DztazvKRzdTjEhURoTWH3B4S8opuv1OqqqyvkL0eMRU9urq6v/X3tn9tzGlaX5X27YQYLgIpKSy1JZbldVx/RET0RPRE/MvMwfPvMwEd0R1d1V3Xa5XGVrJykuAAgQWyK3e+chcS4vU5BsSZDMtvKLYJAAgQQy782zn+8Ylk6x4O/fv28mu9XrdSMvZF/axtPrzn3VHhdPUN4jnsVkMsmN2WXi+32u70/BrVAAb8KrysGaKKUxU8OEIyRwXdLFgr/7mwe8ePID+79+yNZ2F89ZWtZa4zvXIRUjOJycUdRAaVyl8TQEjkvV9alXqhwcHMDSLVRKEUURz54/BSCoVDk7ueA3f/s7Go0Gw9GYMMlHOk5PXrKzs8s333zDbNmQdPqyh+s7BMF1fXPuBoqL8zplsHSNrWccFPHVkInjMto64eRFnf2dLp1WE7+1JCbzA3TOnGSu540N/D4L9Zaw17XYCGNvcvsmkeap4+NjUwJqKzBbSBQrQlYdV8IPWmvu379vBKlYYovFgpOTE0ajEePxmFarZfbZvXv3ADg7O2Nra4vvvvvOlIWKNyE9BXac+l0wm814+fIlgMkBiGIRwWeHwESoynX+EHhdkrL4eW8SWJIUn8/nRhBLX8Wq9xbPa5VglaofUY6SYLWtbsAQr0lHtlBQO871ZC9pGBTFLtTUMtTFXtcfq4gqwu51kNnB4tXaiu6nHP99cCsUwKqNYz++YQkU/mcs50yRxAnT0ZBR74zfX7zky88PaFRzzSpdeEopFLnicNyldQiw1PreMq+AynCyjHg+z7VxkjEdhzRrG2xuhmitqddq9C4HxFHCt3/+jgdffMm//se3dLp5yVm7vcn5eZ/5/AXnF30efvU3pKni5PgUrR0ePHjA86MX5lySZJnk/RHkRZvWA8iFehqTXJ7x8vuIbH5JoxJQrTdx7nRwHR8qmorroF29DCEVWvLXHDe2hdGq0t2iQF6VA1BKsVgsmM1mhGHIixcvePjwoUn6Ss2/LWBtq1BuJDuJCJiYq8RdG42GoXjudPKwX7fb5dmzZ9Trdb7//ns2NjZI05Rms2noBMIw5O7du4YCQEYYXlxcmJDT+1TiiCU6m83MiERpdpJrIFQRRYuxqAzWjVW5Gnl+1ePi68RL29vbMxVeP2ZJr/oO9v9swSzNd1IK7Cw9/tFoxP7+vunJkLyPNG1JTiKOY4bDoXmvdJoHQWDCP6875x+7boAJVQGmoGFnZ4fxeGzGhsKHzefcCgXAMvygtVWLrjMcx81DPEotn3dIHfCs/eQur02WKWq+SyNwaPous+mEYKtDreozn1zRXGb/wSVOFV5gdZ66IlI1Vc9HZxkqzcjCGf5sRDIZM5lfUelskmRzsigkimJSpZhPxnz15UNOez0ePXpEs9lmcDWl0WjwH7//N/b3D3h50SOOU77+5lv29/c4O7+g3a7y/MVTKkGFxSJeWi38pOEd+rUPAJWRDvpcJClJkpFkGee//a/83Vce9zaa1DyXuuvi+jWUkxoB5Ugm/QPBVgSvu2lsJWA/J7FhGZ4irfZhGNJut18bErg+t5s9JiL45UarVqvGAxO6iCRJ2NjYoNFoGGvw8vIS13XNXGAZI9nr9Uw3skyVAkyIah2DvCUf8Pz58xvx5i+//JLt7W0ajcaNxLB9zT+GF/CmMu7iY7vvJ0kSnj17RhiG7OzsmFBImqY3KmJWFYPIseT8JIQkvDyA4XSScE2lUqHVahnSuJcvX3JwcGBI2iTXAxgiOZvWQUJAoiQEq7p5fwqEGkRrbaq8JA8h18emG193KOhWKIBiKEJ+2wLDnLgV9rkRi1RLrptM0dnc5LdfPWQ8HnN8dMTenTvoVMicwHEKTTTWseW46AyPjHARkoRzpoNLotGQabjg7PSCSCmiOOHyckBzvqDWahOf93nw64f8n//3f3n24iWuCycnJ1SrdeIkw3W0oSnOqQsq/PrBQ77//tGNeOI6kMwm9M5OefH4ByJ8dho1ur9+gApc3EqFgBjcmwO81+1kivC1Ya+rDVvg20JcXh8EAXfv3mV3d5cwDDk/PzcDQWzhsKoiRmttBKMkfoUD/vz8nOl0ShiGnJ2dEUWR6TaWxisR+N999515//n5uTmP2Wxm8gqiBO7du8fJyclap3FprQ23vXyPKIr43e9+ZwaHi7VqN4p9DLyNlSprJN20WZaxt7dnkvNCvud5nvFyijFzW2ZIuE0eSzWOsHoqpYynlySJKQuXBLSsn5D1yZ4TbyCKIgBDyyG8//beftccj3yn6XRq9rEkhUejkfGKhDjux6rI3ha3QgGI5rQFuiQA5be5yYvhIPlbZyRRjK8dKn6AihKe/fADLSegEQTsNhtkSULqOICLX/HwXY9MpbgaXBy064Kr83nC8zl6NkZNhrjRnOnpCRfzKeNJyFn/kpPBgFhrqNZoTEMuBn/GrVT4t2//TBznm61ebzCZzomn8+U5sIxDVggCH8/zefLkiRESq2Ka7wQNTqbQlwOe//FfOHlxxGJwweJ//m/2dna4t7tFt1bBC5azgeVN2fpDQHJukrR83braP3IziRATV1is7G+//ZYHDx6wu7trOivluknntn2T2BQKQiomcX6Zxzoej+n1embIC8Dx8bGp3RYhImV8EgqQ80ySxCiBSqVihtJIZ+86r2kYhhwfH5tk9Xw+58svv2R/f98ID3sIyYcMIbwPJKwi4Zft7W0TX5dqmOJMZRu2EWFzJUlSeTabcX5+jtbaeASA6auYTqem6ksUhCgZ22CQMk3AUHuvCmm+DyTMJ+dRr9fpdDporU0y+0Mo9FuhAGxmR9Hmdg2t/L6x4LYiUBoPiKIFWqVUPY+v//0PnPfPcMKIMJwxnI7pHtyl093GCyo5EZrOq2KUUiidgqPxPAcvc4iiBcPeOQ1Xk6qUi94pj09P2dm9Q5pFLJKQarPB0+Njdvb2idKE/vk5idJ8/vnnPHv2nPE4T2i5bi68kjhmOpnh+3mVk84UO9tbhIuUwWCwthvVgWVNf4qaDoniiKeBT7W1xVd/+19ot5vUfajiWddS46j1bjDb1V+1nvJ7VQLY3gMieGu1Gv/0T/9kbth2u00URWxtbRmLrkgRYFuJwtMuwh/yWa7Hx8emLFRu7ouLC9NUFMexCVGcn5+b98q+ld8S8pH+BKEwXqcAFgNJQk+A4ZeRElG5nrZA/LmxKqdnD2gXi1dKQ+3hKfYayvnbcX7xJCRkIvtOPAFpphPLvdFo8OzZsxtT1bTWpoKo2L2uVD5EKMsyEzIUT2+d10fCkvY+sq/Vh1jHW6EA7DifVG7YGvaGd4DGcVy0zotAXZ17AUopXA+q1YDpdEwY5to0XMy4Go/4rPKlmZ1ardbRKByWlqijUeRVReLIua6PV6miMgjqdVKt8YLcWnDRVAKXne0t5mFCOJ/Q3eriOZrxdM5sfEXFyzdphiaKMpI4ptGoLC1Uj0wlVILcKhmNRnzxxRc8ffp0bSEDRZ5OdoEsTZhfDemfndDubPL54R7d5i4VEZTieazZwrC7d+VxkcPmRhjPeq5Y7SFj98QSu7q6otfrcefOHfPeVVS5xRiyLRztOK6MjKzVamxtbdFqtbi4uMg7yJdWvD2zVmtNFEWGf0hKM0XJtFotBoOB4ZWRc1kH5DjSPPXs2TO63S5bW1tmwIhNFbFuwVFsVPopeFNFz3g8ZjAYmDWB61CdTeRnH8emgJBEucTLZRavhA7tmQFxHBu2z16vh+d5ho5B1tCm1pbfi8XCzCEWqgrbm30XFHNhogSk0EByOvV63fQmrJva41YoANG6ReEvF1iQ38TXf3vSC+A4ON4yZOB7fP7gPoGnOeud4msFribJYoLAo7p032v1pfZWad5Rm6RLgZXPHfYqFaqtDjoN8WotDn/1gMP7XzDo9RiPJmxtbbFzcIeNepPT8ws2tnb43cNfEyYJJxdDfnV4mG/EMA//zOdzHDPD1Mf1YNAfcnR0iuO6/PDDD+99HaW4VS8riZbs8DgqIR5fcvr8BzQpu1sbtOo1/Mby+/h+Hp5aswdgr6vtVksppfneljdQTPZJmKBSqbC/v89vfvMbLi8vgdwdl7ixWG8CURwiGOy4c61WM7mDzz77jFarxWQyYTQaUalUODg44OrqCs/zTHVGlmWcnZ2ZhLBUJomQgeuyxvPzc05PT1/Zv+uGsKNeXFzw+PFjut0uGxsbN+LYb2qqeles43iytsLFJAl28WLEOpcCgFUhPeBG7iwMQ7MHxuMxs9mMZrNJEAREUWTYXKWCRyq3xNsTSCcxXHf8KqXM8HbxuIT+4X2wqgJSrot4HkKLYa/nuhTBrVAAyTLO5opGBUDGO4JSVv2/mzd+ucsh5rkigCzTOFpRbdXwdZcvOy26Z3fAreBXAja7+8SZgiTC9T1U4oCb30SajDjNm08qmUuSxWjfobLRJNA10iThv/33fySdzJnsj5nMpqReLm53Ors0gypRnHLY3abT7fLw8wi8fKEWcUT/csTwasR0sUwwLkKUcmi3O4yurmfXiiv7rrjeRgXOfXx0FDE7esLL6ZjHO7t0Dn6Fv9Vm160QkOK5DmrNaWCJn8LNKg67a9VO7BVzA2LZiWUoVSK9Xo84jtnd3aXb7ZoqD9sKF4Eh1hpgji1lk2ma8tvf/pYwDBkMBkynU8M7L7QEYRjy8OFDtNY8ePDAxGoBLi4umM/nZiiIhBykekQqd4Q3ft2Q6zcajXjy5AmdToe9vT1TEfQhlc/7oJi8rdfr7O3tmeE5YvlKeM0mwIObHohNGyHMoVLuK41bYgCIIE3TlN3dXTM3QPooZDynJFolqS4GiD320/M8Go3GSrqRt7kO9n1hPy/epYQSpf9A9tG61vZWKAC7Zvn6Z3V1UB7v0UtFoG80g0kNved5RGGuQZvNek4FqzWBm7vuWZKitIt288RnmkQovdSo/vWF9TwPlWmCSo2wlsf8drY28YZDwjiiVq9T2dgkjBP6gwFXV1ccHh4yixIGw0tc3+NyNKbeqBPV6kRZznjoBxXOz8+I43Rpnbz7JvppyMNlaE2cLDh6/pyHwz5DJ6NZrVLBJ3PXzzZoC3cJm8iPCGibCrgY+rNdZDukkWWZIeuSSiOJF8v7JGkrN5koHfuxWIOVSoVut2vKQoXWV2LFk8mE+/fvc3l5eWOIy+bmpqnEmU6npGlKv9835ybnb8ex1wk5ZpqmjMdjHj9+zP7+vhmGI3Ht2wZ7XSXEIbQI0nwl+8KmeRZIOOR1x5ZKmjRNTcxe3i8KYTabsbe3Z4yFer3O/v6+yR2IAhC+n9xzD0xVjh1afJ+1XfVeuT6LxQKttRkcX6/Xzf5f1366FbtjZdeiyPtCVZCLa0Yb5ljWdysFaLR28P0AJ6jgBDnjX7/f56B+l/l0hl/J46MLNxcWrpuHTvylwolVjEpidJyiM4XnBTlBndfAqfn4QUDdr+HNQgLfJ6hv4Pk1mi+PefzDI7Io4fPdXTYqAUenZ2TRgr88e0a93eLPjx6jtWY6maNdlyS9WTP9wRp20GgUZBnZDHqnz/jL1/9K5bd/t4yHNmhUPDx3vR7AqvMphvZWderav22FIa3+EoaxGRiFXMt2je3cg/zYrrRYhRIakMficUg1ytHREZ7n5QywWnNycsJkMmE8HqOU4ujoiMlkYgS9Xf66ysVfN6QjfTAYGFIzGYAivPO3FRL3zrKM8XjMzs4OjUbDhDmKzJqyvrZHYB8LrhP+ElISL0JoM+bL5s44jtnb2+Ps7IzJZEIYhmZYuz2GEjDfw17XD0W1LRCjRhLjMh5UPM514FYoACQBqZfzacGEUOBVMiTXdZHphVo2gZJGMo9as4nreCSp4vjJszyhhMrdvuV8zyiNiZOEai1AZymkKVopAteDOCZdhGRRRGVzk0w7BE5AUK2TaYXnBjhZSL/XY2N7k3q1xsGdfUgz/vT1v/O//vF/0K5WadWqvExSlEp5/PQJ6fI7KifvXJbz+dAwTKIaSBKS0YDTH74lnM5RZHz54Aua1SrNynoVwGrP7mY8t1j2aVcO2ceQ8jiZq3t+fm66JbvdruF+F2Ei3ZpwnYsQgRJFEdVq1bjyEmIQa1OI3hzH4fDwkNPTU7755hv+/u//3pTn9ft95vO5STbCzaakjw1JfB4dHRlr+v79+2xubpowyYeEnch/1/cJRbN4cGKdyx6wO2/t9RLYg1VkHKNtYAgHkPD8LxYL9vb2DN+/eGuz2cyMEpX1LXoh9vdfN+xj2gqyUqmYiWM2E+r74FYoAFs42M/Z7pX9f2fZ9OVIkoCbFy1VoF0Pt1Jho7OJUiqn0V1WR4gLqcmYLzJ8NCqKUElKlKUEKiUJ85GNaZygXI8oi1Ax4DhEcUhGxmQx5eL7l+zs7JAkCc1m7qL9/ve/587BAaPRmKvJmPl8QZxmzGYhSkFQCXI653XV/f8Ylg0Tptk3XNA7fsHlPB9A3tnYwu128de8HYrnZpfW3VhPK95ftOyKysL3fRqNBp1Ox6xrYK2rWPgiSKT6A667Qu0ktFiEUt8dRRHj8Zi//vWvHBwc4Louh4eHfP311/zzP/8zm5ub9Pt9hsOhyRsIf40kGz/aulqQuLFMNBOB9fnnn5uB5R8S79rrIIJcmuhkpnKtVjPVVfbwdJsC2y4ukOstrxeLX/aPdNO2Wi02NjaAvPru4uKCw8NDPvvsMxP6kRm+cg2LpaEfM7ciXqvkBGRwkVRJvS9uhQKwLf3rcBCvXGytNb7jkjnXiUL0dScwGWgFkVZ5qKbdwXMdU+vveK5xNT2VsIgjHEeTKEUymaPTjKCiicIpOk5RQUDsOPjVGsOLY3SU4LsecZqgHZiNe5y/fMn4Kp/fGwRV3MBnOJ3z8ttvmUQR3784YrpIUL6HIo/G5xUrEo/2UGp93aJvwpL1CJVlJOMrkgyOnz9lf/cuWjn4O1tr/bxVtABwva7276JiEC9APAZR2r7vmxI5+7XC7aN1zqAp+0YqdmSMn/35kuzt9Xo0m01zo8lMZgnliAU9Go04OTlhPp/z4sUL4jg2318Ekd2E9jGVgFwrmTJ2dHRkKCJuazIYXqWTkMouqcqx6+Gl0svuAyj+HZhKu8BU8kiRgD3fd2dnx6x/v983nbb20BnJKdlD4d9V0b0N7H0jirOfWS0AABMtSURBVHE0Gt1gTJXv+764FQpAa4XWkN83ecWPhyN/Ll8Djnst/GG56aV0UGU4JLjLGbgoTdWv4i/jefE8j+epNGMxnxOOekyvxrQbdeL5jOloiOOC77sEaUYcztlobkDvktZGm4unT/PqD8cz3afxZMLFeEJ6OTSVBlprelf57FflwHZni/jyklmSEngOeDCfhfiBh9YS0/wx9s/3vcD5r0yOr4Ekoz6ZcHXylG+2NhjOr6g6v1nvx+rrwT22u1qM8ds3sP2aoiUtsWARyBKnFSs/DEMWiwWj0cgIdKH3FQUg718sFtTrdXq9Hk+fPjVj+uI4ZrFYMBgMGA6HxHFshOjV1ZX57EajcWMovFLKPP65PABBkiQMBgOeP39uKp5uG+ySYHks5Y/S0CWVWuLpQS4QNzc3TcWP53mmvt913RtDgkSYi4dm70G7HyAMQ8bjsfGiJCdkc/0XDdF3DXn9FBQVtniraZpSq9XM9x6Px+/9WbdCAaxKFjqvKUlcJSRyBaBwNDhakaFx0WidXVeZBAGofAOkSnF2fkG9VmM0vuLrP/wb6Ix6pcrX3/2Jrx48wEkVtWqVRIPreBydHrNYRLRaLbq7OyzCPJb8+PjINPp0u93cGtUZXpaYDbe3vcOzl2fEStNoVKhUXBZRYoVBPiYR8zViYhbnp8RuQDgY03DXmywsVnDZzTv2TWXHWO0cwZtq2GUql7j5Wue0E8KYmSQJ33zzDXEcU61WOT09NROdJOHrOA5nZ2eMRiNqtRp37txhNpuxWCw4Pz/P5zVk17OG5UaUUtLNzU1GoxGO45jX2GWIPwfkO1xeXvLo0SOjYG8b5N6ww4CiBOxckfxfZjBvb2/nhRTTqSmPlC5xSeLbilw8Rsi9QfkRo8QOHcn3EY9BXiMhQzvn8CE9geLesbvopSu9VqvRbrff+7NuhQJYlSR0HXdlaOh1CgCt8LRGKfBcF+1AhsaTDebls3TV8jPqGxtstJr88V/+hRQHnSqOjp9yNhhSazSJZjMajSaLKOeFny6W3aCXA+6p61F//fEEx88Tjhej3EL0Kz7ZZLb0ahR+tcLW5gaxJ6RWmlot5xfJsg9dAvp6ZI6GcMb87BzSjEcb77+hbNihEDvUY5d7yg3/uvCPrUTssA9cJ43ls5TKx2q2223+8Ic/mOaip0+fcnx8bMr+xIqXyh0R2v1+31iS5+fnZkqTeHxSMSTvabfbr0yFkt6BdZLAvS20zvmCer3ez6aI3ga2Eih21oo3cHl5aXIs/X7fzIQW9lbh6xGFMJvNTDGArQCF8VU8tSiKyLLMvE8qhSTmLoq/WLb8c0A8XslzrCO5fzsUQJrlHPXLH8d1Ue5N7o+iwLCrRRzHyekclMZVynQIu65Dpq4HLbueC1oTNGrcufc5Dortg0OqtTp//ct3XE7m9CYzgv4l09mY3a5D/zInB2t2WsxneaPP8PEjxGo/H4zpdjeYzOfMI83BXgdfZTQaDcajMY123mW63e3Qn89Mo1G4iFdaEdfPaT7GvesrDdMRkyzhaWW9m7tovRetJ9sLsKt+bij2Jex9YCf27H0g3cKQV3zs7+9zdHTEaDTi6urKWHftdpv5fM5kMmFzc9M0+EgSUCnFeDym3W4zGo1wXZdutwtcx5OlCqPb7ZrGMDn+qpi7fX4fC5JUvS05gFUUEqsaoWxqZUnsy2ueP3+O6+YD5EejEYDp1BWBD9zga5K8gr0+YRga5lTIwykScqpUKqapTyqJ5PeHLv38Mch0PAkHvS9uhQIoCgo7225bg3aHqP0/x3HyOneVEwNFWZoPQPczXK6bf9IsZ9TTgFevkcYJn/36C06eP2NjZ5tYKRZaESch7c0tnIpPs7EU/Dq3AOvNBlEUm5u+UqswX8Rk2sFzNdP5gqrn0my22b97SJoqKtU6mZuHKyRmndMIrL4e+bnlPQ3Fssn1XngH5ehl5nzG/OXpWg8vXC621W//tj27Yhew/WMLA/s1xWSruP9JkvDFF19wenpq4vlCHCchIKmikNr9VquF1trEVT3PM7HjNE2ZTqc0m012d3fNyELZV1mWGY9QiOZW5QFWlbd+KMh3E4v5Y8MW9rLeP7aPi68TRWAzvsq6DwYD6vU6gBH6Qrli7wMJmUgOwTY6JMkrx5Ycj3iJEpb6se//YwptXZD9IpVr65ALt0IB2KEBWG0N2htgpbAQBaA07pJ2GRdUujwmGEpV13XRjofjZTTaG+zc2aff7zOZzrl3eEAY5pOC6vU6US2mXquROin+5ib1ZWXB48dPlmVljaWgUDSbVUDTbrfJ4oTu/l1OL86pNurMotDUoDuOdLWqV6x8OR/Pc9H6eqDJhxAWjvJQKHAU6AwW66UrkKoUcbeLwt8W5Habv8RabU8BrstAi0llKf2UUIDWmu3tbfNZg8GAWq1m+N6FX0WqSmxWyCdPnhhFIeEHsSBFIB0cHJiQhAyAn81mr9BO3LjWy/OV72fXuK8bxe8ggu5jwhZOP1VQFV9nhwqlI9fuvh6PxybsIw2C0rAlZb2yL2azWV4KvgwVCeGbVBiJ4JdYv11pI7H3163Vx0r62+sqzX/vi1uhAOwWfRHQdrem7fa7Hmi1DAVk1zeWSQBnGZnKSFOXqqoQOEvXPIvRIoAA4iQXvhqqtQYPf/0Vv7r3OS+fP2bUPyfwXcbjMfe++oonT54wmU3pdnfY6HSI04xGUGM0GXNxccGdz+4RRvkGcfNx82jXYRLOUZ5PouBqGpIpj3CR4XmQpvZmf/VmcRyPNP2w+QENufAnr0NS6XoFhayhTQoHr053sv+2hb1tCNgCX5SAfIatJG3e9Gq1Srfb5R/+4R/o9/ucnp4a9//+/fucnp4yHA7Z3t42gqVWq3F2dsZgMKDb7ZqmKonpS1meCAXpKpVmndfBtvg/dsPYz5kHKIb4BDYFPNxcY7G8pXZfjiFK264A2tzcNEl4CQXBNYmbyJXJZGIGvEifiKylWPudTge4vgdthb7qPGwDFTDf+UNd72L+4RdTBlrcDEXcSAyib3gDRmng4GiVdxJnGSiN4yS4njSMuTj+9dQvE1bQy7rfSoDrQnezQ9XVDAZ5Ai1JI7a2u4TRglkYoh2P4dUIv1plp7qDF/js7B9wcvqSfr/P4d1fcXV1xWw24+jlKcqBwWhEUK+xiDKzeV8HsRCLzJYfAsIeiraJ5NaHVYl7eVys/4dXY8R2yE+sHtttl+5em0pCbkARJjL0XWLCl5eXhnDszp075nhixXc6HdNxLKRqSqm8e3xJt7BYLIjjmKurK6MIiknrIuT/NnvlxxDMtlL9OfCmz7b/J0l2O+4vxmARvu/TarVMWCdvwmzi+z7tdtuEWTc2NgydR6fTMV6a9BtIyK5arRquHSk/lRxAMZxXXDPbUJW99yE9Avu4v5gQ0OsqfIrWYB7qeTU/kL/PycdFqpzzJmf4zwngPNNM4KKXAl+ppRIgLxvVWqPQOCpvqZ+MrhgMBwS16nJQSEQ8mXHe61Op1ZleXtJoNMgUnJ2dcXp6iiLnGI91RqxSLq9GBPU6biVgPJmZz3wT7Gqoj+VaXmO9gqJ4Q9hhPqmssOP8dlioWA0i5XiiuIsVEHJs8QAkZmsLESFN6/V6N567uLjg9PTU9AfIse25wd1u1yiR4+NjY20uFgujrH9srX6Odf3PUAUksPM8qwoBbNihtHa7jePkTWD1et2MlZRKGWkIazQaZpKbeBBbW1uGW0eMgdFoZKp/fmytZB/Z3suHFP5vUkbvgluhAFYJilVxf8hDFcXwQR7vd/MQj9Yo7eSWfaLJfMDz0Dio1Jq7my05RpZJ4lQpUpVRrTdwHIdas4EaDnj06BFu4IP2uegPqNRrHJ2fkek8Hp1pRafTodHaoN/vM56ekjnQbLZRnsPVdEKmFa32JtPxzFgKr4OtIN52gYvu6U9/o9BEfBjeeNvNFwFfnBVQDAXJutsVIbZnZN+cNv2z/VpbEchQDYklv3jxwny+lBVK3T9gmook3nx+fn6jymQymeC6OdmYdBj/lGsh1+Ft8M7r+hHxukqj1xk8RWFWTKT+FMgay5xtx3FMnF88OnvMojR4SZWXrC9gSkclnCSloLJHXnfd7effRfjL63/KORePv45k861QALbrbG5eMtAuruMCDkpL1cir8WMJ8agsywuBsgxUSuY4xBG4rnTAXsdeHbX0BHRKmmWkKiNTCjyP7d0D3KDCXQUnp/kQEC8ImCwWZEoTVKtopekNBjQaDXqDIfV6nWa7RTqbM5tNidMRXlBhq9lidDVhOp4gVT235YZ2UWYCmib3rtYJEcC2Il/1GttKX+Vi21VAtlVvjzws7h/7tfLZnU7HEID1er1c0ddqtFqtG1zwo9HIkMEJJfB8PjeKplqtGm9hMpm8kq+4TfhY3sbbhiPsexheZfcseoz2/+zn7ElfdnWMVO9IfN+e5CZrOJ1OTcjHVvj51MDqDa+z+L1X4V2u89sI8Q+xjrdCAQCv3MBwvQFuhICc61rwGwrAUSi1TASnKTrNwFGELBk+WV7sJe+/q3MBkTn5AqdaobIMv1rFi2M63Z084eTn04HG4YzeaASeh1OtMhqP2T88YD5fUF3STjfbLaLLoZkw5Vcc5vMF29vbvHx5hqy1ndT++GGe1dBar70feZV1JzenbeXLa4u5HXmNCHK5yYtc98X4u1jxcjNL3X6r1eLg4IB2u22mPknyVpq3Li8v6Xa7hGFo6CSEgVS8Bzme0FLL5xY7l2/Lut52vEn5Fz2LVdfX5vGRfo9KpWKEuOw5afgSYS/JfZkJIT/SICjd5vBxOIDeBuuSG7dCAWgycl5/F40mUxmezP11nJwWwrn+0Y6+8RjHQTk5Z4ijNUqlZMuB71Gckrj5vGDZS46jcdKMTCWoJMXVGi9NqfkVknhB4mqcRo1WY5/W7iEuDu1wDEGd6XRKGIbcPbjHZHLFPEyYhHNaQX4pD3b2iJKYVrXOYDRkNl8wX8yo1gMCr2YGVH+Q6/iWGyKDG9nfdYsK2721lfkqpb4y3+M4N6x4WxnYxyvWiBfzADaJmFjvrVYL3/dZLBZ4nsdwODSWodT9SxOR1prNzU0zTUqS/MLLIvXmHyPxd9vwJrqON73HFvqrZjg4jnOjAxdYSbYn6ynU3DZlg/TqSL5G6CEajYax7uWYkhNwXZetrS0znczuQVg33icSsK7vcysUgKOXfbUq/8Nx8pDP9YV3XhEMxR+k4csSFprr/IIGkkQY/TRelpeGZnGCqzWjfp+r4QiVRfz5+7/Q2d7iy4d/w0Yzrx6o1iocHh4ynU7pDy9J05ROZwM/qHM+6PPsxXO01uzt3+Ho6IgwjlBoWq0G4+kcz9em9Mzm8r7NN/e6sMqyW7WGtkdQLBEsHksEvW0JyeuFqgFgOp0yHo9JkoSTkxPq9TqHh4c0m828w7vZ5O7du7TbbSaTCVprI9Qnk4lJDtfrdS4uLvB934QWxHuwxxe+7px/SbCv97tUovyUpjCBrShsTysIAkMF3mg00FpzeXnJaDS6Ye0LSaOQxk2nU+I4NuR/UhEm3qQk9T3PMxVFxTDmutb2NuyRW6EABK8TFKoQFrA3RVEBoBRY1mEmFiOQZal5rVK5QE7iGLXItX2cJkxGQ+bzGbPFnHqtwa/u+qRxwtV4Squ9lTcFXbm8ODri3meH4FdNWdpwOMwTirUq2nWIkpjReEqtFuTfY7nxf86yvJ8DRQG+KulrJ4Pt18nfxZiwXf5pKxSttYkJi7V+eXnJbDbj2bN8ONBoNOKrr74yFmG9XqdWqxnvrl6vm7GKw+HQxPmFIsCmCnYcxzSi2WHMXzo+VEhk1b1RLBGX+v1er2cEd6PRoN1um/WX/g1ZLxk9OR6PDcOo4zjcuXPH5HfEixPjQYgAxaO8LeHadeJWKABbu69K8OYRH3msgZsbwl6UvKEpNYLWk/CD1miTBFaQ5gu+CEOIExw/dxulk3ARxfzxj3+EDAKvQriYEMUK7TqMrq5obrT5+k9/4uHD37CwwjqjyZjh1QgHF68SsL9/h0WUmBBD8fv+EjeVwE7AymPb0i8mAlc9Z18bO7ErxxHLzCj8ZVKwGGqLoog0TZnNZnz33XemcUi6QlutlukUfvLkCYeHh+YzF4sF8/ncEIz5vs/29jaTycTUnBe/6y95Xd9G+BcpIex1tZO5P8UostfY3gf2JLAgCIzQlsRvkiSm/HNnZ8d4ApB7iDIzWNbazlPJHrLzTLctH/A+cH6pm7REiRIlSrwZt4MmsESJEiVKfHSUCqBEiRIlPlGUCqBEiRIlPlGUCqBEiRIlPlGUCqBEiRIlPlGUCqBEiRIlPlGUCqBEiRIlPlGUCqBEiRIlPlGUCqBEiRIlPlGUCqBEiRIlPlGUCqBEiRIlPlGUCqBEiRIlPlGUCqBEiRIlPlGUCqBEiRIlPlGUCqBEiRIlPlGUCqBEiRIlPlGUCqBEiRIlPlGUCqBEiRIlPlGUCqBEiRIlPlGUCqBEiRIlPlGUCqBEiRIlPlGUCqBEiRIlPlGUCqBEiRIlPlH8f/vjhzvd5f/5AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 6 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from scipy.misc import imread, imresize\n",
    "\n",
    "kitten, puppy = imread('kitten.jpg'), imread('puppy.jpg')\n",
    "# kitten is wide, and puppy is already square\n",
    "d = kitten.shape[1] - kitten.shape[0]\n",
    "kitten_cropped = kitten[:, d//2:-d//2, :]\n",
    "\n",
    "img_size = 200   # Make this smaller if it runs too slow\n",
    "x = np.zeros((2, 3, img_size, img_size))\n",
    "x[0, :, :, :] = imresize(puppy, (img_size, img_size)).transpose((2, 0, 1))\n",
    "x[1, :, :, :] = imresize(kitten_cropped, (img_size, img_size)).transpose((2, 0, 1))\n",
    "\n",
    "# Set up a convolutional weights holding 2 filters, each 3x3\n",
    "w = np.zeros((2, 3, 3, 3))\n",
    "\n",
    "# The first filter converts the image to grayscale.\n",
    "# Set up the red, green, and blue channels of the filter.\n",
    "w[0, 0, :, :] = [[0, 0, 0], [0, 0.3, 0], [0, 0, 0]]\n",
    "w[0, 1, :, :] = [[0, 0, 0], [0, 0.6, 0], [0, 0, 0]]\n",
    "w[0, 2, :, :] = [[0, 0, 0], [0, 0.1, 0], [0, 0, 0]]\n",
    "\n",
    "# Second filter detects horizontal edges in the blue channel.\n",
    "w[1, 2, :, :] = [[1, 2, 1],\n",
    "                 [0, 0, 0],\n",
    "                 [-1, -2, -1]]\n",
    "\n",
    "# Vector of biases. We don't need any bias for the grayscale\n",
    "# filter, but for the edge detection filter we want to add 128\n",
    "# to each output so that nothing is negative.\n",
    "b = np.array([0, 128])\n",
    "\n",
    "# Compute the result of convolving each input in x with each filter in w,\n",
    "# offsetting by b, and storing the results in out.\n",
    "out, _ = conv_forward_naive(x, w, b, {'stride': 1, 'pad': 1})\n",
    "\n",
    "def imshow_noax(img, normalize=True):\n",
    "    \"\"\" Tiny helper to show images as uint8 and remove axis labels \"\"\"\n",
    "    if normalize:\n",
    "        img_max, img_min = np.max(img), np.min(img)\n",
    "        img = 255.0 * (img - img_min) / (img_max - img_min)\n",
    "    plt.imshow(img.astype('uint8'))\n",
    "    plt.gca().axis('off')\n",
    "\n",
    "# Show the original images and the results of the conv operation\n",
    "plt.subplot(2, 3, 1)\n",
    "imshow_noax(puppy, normalize=False)\n",
    "plt.title('Original image')\n",
    "plt.subplot(2, 3, 2)\n",
    "imshow_noax(out[0, 0])\n",
    "plt.title('Grayscale')\n",
    "plt.subplot(2, 3, 3)\n",
    "imshow_noax(out[0, 1])\n",
    "plt.title('Edges')\n",
    "plt.subplot(2, 3, 4)\n",
    "imshow_noax(kitten_cropped, normalize=False)\n",
    "plt.subplot(2, 3, 5)\n",
    "imshow_noax(out[1, 0])\n",
    "plt.subplot(2, 3, 6)\n",
    "imshow_noax(out[1, 1])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Convolution: Naive backward pass\n",
    "Implement the backward pass for the convolution operation in the function `conv_backward_naive` in the file `cs231n/layers.py`. Again, you don't need to worry too much about computational efficiency.\n",
    "\n",
    "When you are done, run the following to check your backward pass with a numeric gradient check."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Testing conv_backward_naive function\n",
      "dx error:  2.9516718140373995e-09\n",
      "dw error:  5.185635070255566e-10\n",
      "db error:  2.1494967362289156e-11\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(231)\n",
    "x = np.random.randn(4, 3, 5, 5)\n",
    "w = np.random.randn(2, 3, 3, 3)\n",
    "b = np.random.randn(2,)\n",
    "dout = np.random.randn(4, 2, 5, 5)\n",
    "conv_param = {'stride': 1, 'pad': 1}\n",
    "\n",
    "dx_num = eval_numerical_gradient_array(lambda x: conv_forward_naive(x, w, b, conv_param)[0], x, dout)\n",
    "dw_num = eval_numerical_gradient_array(lambda w: conv_forward_naive(x, w, b, conv_param)[0], w, dout)\n",
    "db_num = eval_numerical_gradient_array(lambda b: conv_forward_naive(x, w, b, conv_param)[0], b, dout)\n",
    "\n",
    "out, cache = conv_forward_naive(x, w, b, conv_param)\n",
    "dx, dw, db = conv_backward_naive(dout, cache)\n",
    "\n",
    "# Your errors should be around 1e-8'\n",
    "print('Testing conv_backward_naive function')\n",
    "print('dx error: ', rel_error(dx, dx_num))\n",
    "print('dw error: ', rel_error(dw, dw_num))\n",
    "print('db error: ', rel_error(db, db_num))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Max pooling: Naive forward\n",
    "Implement the forward pass for the max-pooling operation in the function `max_pool_forward_naive` in the file `cs231n/layers.py`. Again, don't worry too much about computational efficiency.\n",
    "\n",
    "Check your implementation by running the following:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Testing max_pool_forward_naive function:\n",
      "difference:  4.1666665157267834e-08\n"
     ]
    }
   ],
   "source": [
    "x_shape = (2, 3, 4, 4)\n",
    "x = np.linspace(-0.3, 0.4, num=np.prod(x_shape)).reshape(x_shape)\n",
    "pool_param = {'pool_width': 2, 'pool_height': 2, 'stride': 2}\n",
    "\n",
    "out, _ = max_pool_forward_naive(x, pool_param)\n",
    "\n",
    "correct_out = np.array([[[[-0.26315789, -0.24842105],\n",
    "                          [-0.20421053, -0.18947368]],\n",
    "                         [[-0.14526316, -0.13052632],\n",
    "                          [-0.08631579, -0.07157895]],\n",
    "                         [[-0.02736842, -0.01263158],\n",
    "                          [ 0.03157895,  0.04631579]]],\n",
    "                        [[[ 0.09052632,  0.10526316],\n",
    "                          [ 0.14947368,  0.16421053]],\n",
    "                         [[ 0.20842105,  0.22315789],\n",
    "                          [ 0.26736842,  0.28210526]],\n",
    "                         [[ 0.32631579,  0.34105263],\n",
    "                          [ 0.38526316,  0.4       ]]]])\n",
    "\n",
    "# Compare your output with ours. Difference should be around 1e-8.\n",
    "print('Testing max_pool_forward_naive function:')\n",
    "print('difference: ', rel_error(out, correct_out))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Max pooling: Naive backward\n",
    "Implement the backward pass for the max-pooling operation in the function `max_pool_backward_naive` in the file `cs231n/layers.py`. You don't need to worry about computational efficiency.\n",
    "\n",
    "Check your implementation with numeric gradient checking by running the following:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Testing max_pool_backward_naive function:\n",
      "dx error:  3.27562514223145e-12\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(231)\n",
    "x = np.random.randn(3, 2, 8, 8)\n",
    "dout = np.random.randn(3, 2, 4, 4)\n",
    "pool_param = {'pool_height': 2, 'pool_width': 2, 'stride': 2}\n",
    "\n",
    "dx_num = eval_numerical_gradient_array(lambda x: max_pool_forward_naive(x, pool_param)[0], x, dout)\n",
    "\n",
    "out, cache = max_pool_forward_naive(x, pool_param)\n",
    "dx = max_pool_backward_naive(dout, cache)\n",
    "\n",
    "# Your error should be around 1e-12\n",
    "print('Testing max_pool_backward_naive function:')\n",
    "print('dx error: ', rel_error(dx, dx_num))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Fast layers\n",
    "Making convolution and pooling layers fast can be challenging. To spare you the pain, we've provided fast implementations of the forward and backward passes for convolution and pooling layers in the file `cs231n/fast_layers.py`.\n",
    "\n",
    "The fast convolution implementation depends on a Cython extension; to compile it you need to run the following from the `cs231n` directory:\n",
    "\n",
    "```bash\n",
    "python setup.py build_ext --inplace\n",
    "```\n",
    "\n",
    "The API for the fast versions of the convolution and pooling layers is exactly the same as the naive versions that you implemented above: the forward pass receives data, weights, and parameters and produces outputs and a cache object; the backward pass recieves upstream derivatives and the cache object and produces gradients with respect to the data and weights.\n",
    "\n",
    "**NOTE:** The fast implementation for pooling will only perform optimally if the pooling regions are non-overlapping and tile the input. If these conditions are not met then the fast pooling implementation will not be much faster than the naive implementation.\n",
    "\n",
    "You can compare the performance of the naive and fast versions of these layers by running the following:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Testing conv_forward_fast:\n",
      "Naive: 1.814094s\n",
      "Fast: 0.022231s\n",
      "Speedup: 81.602501x\n",
      "Difference:  3.94112628138944e-11\n",
      "\n",
      "Testing conv_backward_fast:\n",
      "Naive: 0.841612s\n",
      "Fast: 0.013312s\n",
      "Speedup: 63.222678x\n",
      "dx difference:  5.021244662135131e-13\n",
      "dw difference:  1.6641487567603411e-13\n",
      "db difference:  0.0\n"
     ]
    }
   ],
   "source": [
    "from cs231n.fast_layers import conv_forward_fast, conv_backward_fast\n",
    "from time import time\n",
    "np.random.seed(231)\n",
    "x = np.random.randn(100, 3, 31, 31)\n",
    "w = np.random.randn(25, 3, 3, 3)\n",
    "b = np.random.randn(25,)\n",
    "dout = np.random.randn(100, 25, 16, 16)\n",
    "conv_param = {'stride': 2, 'pad': 1}\n",
    "\n",
    "t0 = time()\n",
    "out_naive, cache_naive = conv_forward_naive(x, w, b, conv_param)\n",
    "t1 = time()\n",
    "out_fast, cache_fast = conv_forward_fast(x, w, b, conv_param)\n",
    "t2 = time()\n",
    "\n",
    "print('Testing conv_forward_fast:')\n",
    "print('Naive: %fs' % (t1 - t0))\n",
    "print('Fast: %fs' % (t2 - t1))\n",
    "print('Speedup: %fx' % ((t1 - t0) / (t2 - t1)))\n",
    "print('Difference: ', rel_error(out_naive, out_fast))\n",
    "\n",
    "t0 = time()\n",
    "dx_naive, dw_naive, db_naive = conv_backward_naive(dout, cache_naive)\n",
    "t1 = time()\n",
    "dx_fast, dw_fast, db_fast = conv_backward_fast(dout, cache_fast)\n",
    "t2 = time()\n",
    "\n",
    "print('\\nTesting conv_backward_fast:')\n",
    "print('Naive: %fs' % (t1 - t0))\n",
    "print('Fast: %fs' % (t2 - t1))\n",
    "print('Speedup: %fx' % ((t1 - t0) / (t2 - t1)))\n",
    "print('dx difference: ', rel_error(dx_naive, dx_fast))\n",
    "print('dw difference: ', rel_error(dw_naive, dw_fast))\n",
    "print('db difference: ', rel_error(db_naive, db_fast))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Testing pool_forward_fast:\n",
      "Naive: 0.008629s\n",
      "fast: 0.002362s\n",
      "speedup: 3.652705x\n",
      "difference:  0.0\n",
      "\n",
      "Testing pool_backward_fast:\n",
      "Naive: 0.023871s\n",
      "speedup: 1.929078x\n",
      "dx difference:  0.0\n"
     ]
    }
   ],
   "source": [
    "from cs231n.fast_layers import max_pool_forward_fast, max_pool_backward_fast\n",
    "np.random.seed(231)\n",
    "x = np.random.randn(100, 3, 32, 32)\n",
    "dout = np.random.randn(100, 3, 16, 16)\n",
    "pool_param = {'pool_height': 2, 'pool_width': 2, 'stride': 2}\n",
    "\n",
    "t0 = time()\n",
    "out_naive, cache_naive = max_pool_forward_naive(x, pool_param)\n",
    "t1 = time()\n",
    "out_fast, cache_fast = max_pool_forward_fast(x, pool_param)\n",
    "t2 = time()\n",
    "\n",
    "print('Testing pool_forward_fast:')\n",
    "print('Naive: %fs' % (t1 - t0))\n",
    "print('fast: %fs' % (t2 - t1))\n",
    "print('speedup: %fx' % ((t1 - t0) / (t2 - t1)))\n",
    "print('difference: ', rel_error(out_naive, out_fast))\n",
    "\n",
    "t0 = time()\n",
    "dx_naive = max_pool_backward_naive(dout, cache_naive)\n",
    "t1 = time()\n",
    "dx_fast = max_pool_backward_fast(dout, cache_fast)\n",
    "t2 = time()\n",
    "\n",
    "print('\\nTesting pool_backward_fast:')\n",
    "print('Naive: %fs' % (t1 - t0))\n",
    "print('speedup: %fx' % ((t1 - t0) / (t2 - t1)))\n",
    "print('dx difference: ', rel_error(dx_naive, dx_fast))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Convolutional \"sandwich\" layers\n",
    "Previously we introduced the concept of \"sandwich\" layers that combine multiple operations into commonly used patterns. In the file `cs231n/layer_utils.py` you will find sandwich layers that implement a few commonly used patterns for convolutional networks."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Testing conv_relu_pool\n",
      "dx error:  4.397502834267091e-09\n",
      "dw error:  3.6517164519004474e-09\n",
      "db error:  3.721670750819115e-10\n"
     ]
    }
   ],
   "source": [
    "from cs231n.layer_utils import conv_relu_pool_forward, conv_relu_pool_backward\n",
    "np.random.seed(231)\n",
    "x = np.random.randn(2, 3, 16, 16)\n",
    "w = np.random.randn(3, 3, 3, 3)\n",
    "b = np.random.randn(3,)\n",
    "dout = np.random.randn(2, 3, 8, 8)\n",
    "conv_param = {'stride': 1, 'pad': 1}\n",
    "pool_param = {'pool_height': 2, 'pool_width': 2, 'stride': 2}\n",
    "\n",
    "out, cache = conv_relu_pool_forward(x, w, b, conv_param, pool_param)\n",
    "dx, dw, db = conv_relu_pool_backward(dout, cache)\n",
    "\n",
    "dx_num = eval_numerical_gradient_array(lambda x: conv_relu_pool_forward(x, w, b, conv_param, pool_param)[0], x, dout)\n",
    "dw_num = eval_numerical_gradient_array(lambda w: conv_relu_pool_forward(x, w, b, conv_param, pool_param)[0], w, dout)\n",
    "db_num = eval_numerical_gradient_array(lambda b: conv_relu_pool_forward(x, w, b, conv_param, pool_param)[0], b, dout)\n",
    "\n",
    "print('Testing conv_relu_pool')\n",
    "print('dx error: ', rel_error(dx_num, dx))\n",
    "print('dw error: ', rel_error(dw_num, dw))\n",
    "print('db error: ', rel_error(db_num, db))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Testing conv_relu:\n",
      "dx error:  4.84744795054139e-09\n",
      "dw error:  3.828307135442351e-10\n",
      "db error:  2.9449034603190923e-10\n"
     ]
    }
   ],
   "source": [
    "from cs231n.layer_utils import conv_relu_forward, conv_relu_backward\n",
    "np.random.seed(231)\n",
    "x = np.random.randn(2, 3, 8, 8)\n",
    "w = np.random.randn(3, 3, 3, 3)\n",
    "b = np.random.randn(3,)\n",
    "dout = np.random.randn(2, 3, 8, 8)\n",
    "conv_param = {'stride': 1, 'pad': 1}\n",
    "\n",
    "out, cache = conv_relu_forward(x, w, b, conv_param)\n",
    "dx, dw, db = conv_relu_backward(dout, cache)\n",
    "\n",
    "dx_num = eval_numerical_gradient_array(lambda x: conv_relu_forward(x, w, b, conv_param)[0], x, dout)\n",
    "dw_num = eval_numerical_gradient_array(lambda w: conv_relu_forward(x, w, b, conv_param)[0], w, dout)\n",
    "db_num = eval_numerical_gradient_array(lambda b: conv_relu_forward(x, w, b, conv_param)[0], b, dout)\n",
    "\n",
    "print('Testing conv_relu:')\n",
    "print('dx error: ', rel_error(dx_num, dx))\n",
    "print('dw error: ', rel_error(dw_num, dw))\n",
    "print('db error: ', rel_error(db_num, db))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Three-layer ConvNet\n",
    "Now that you have implemented all the necessary layers, we can put them together into a simple convolutional network.\n",
    "\n",
    "Open the file `cs231n/classifiers/cnn.py` and complete the implementation of the `ThreeLayerConvNet` class. Run the following cells to help you debug:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "## Sanity check loss\n",
    "After you build a new network, one of the first things you should do is sanity check the loss. When we use the softmax loss, we expect the loss for random weights (and no regularization) to be about `log(C)` for `C` classes. When we add regularization this should go up."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Initial loss (no regularization):  2.3025858920666518\n",
      "Initial loss (with regularization):  2.5084256452175917\n"
     ]
    }
   ],
   "source": [
    "model = ThreeLayerConvNet()\n",
    "\n",
    "N = 50\n",
    "X = np.random.randn(N, 3, 32, 32)\n",
    "y = np.random.randint(10, size=N)\n",
    "\n",
    "loss, grads = model.loss(X, y)\n",
    "print('Initial loss (no regularization): ', loss)\n",
    "\n",
    "model.reg = 0.5\n",
    "loss, grads = model.loss(X, y)\n",
    "print('Initial loss (with regularization): ', loss)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "## Gradient check\n",
    "After the loss looks reasonable, use numeric gradient checking to make sure that your backward pass is correct. When you use numeric gradient checking you should use a small amount of artifical data and a small number of neurons at each layer. Note: correct implementations may still have relative errors up to 1e-2."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "W1 max relative error: 1.380104e-04\n",
      "W2 max relative error: 1.822723e-02\n",
      "W3 max relative error: 3.064049e-04\n",
      "b1 max relative error: 3.477652e-05\n",
      "b2 max relative error: 2.516375e-03\n",
      "b3 max relative error: 7.945660e-10\n"
     ]
    }
   ],
   "source": [
    "num_inputs = 2\n",
    "input_dim = (3, 16, 16)\n",
    "reg = 0.0\n",
    "num_classes = 10\n",
    "np.random.seed(231)\n",
    "X = np.random.randn(num_inputs, *input_dim)\n",
    "y = np.random.randint(num_classes, size=num_inputs)\n",
    "\n",
    "model = ThreeLayerConvNet(num_filters=3, filter_size=3,\n",
    "                          input_dim=input_dim, hidden_dim=7,\n",
    "                          dtype=np.float64)\n",
    "loss, grads = model.loss(X, y)\n",
    "for param_name in sorted(grads):\n",
    "    f = lambda _: model.loss(X, y)[0]\n",
    "    param_grad_num = eval_numerical_gradient(f, model.params[param_name], verbose=False, h=1e-6)\n",
    "    e = rel_error(param_grad_num, grads[param_name])\n",
    "    print('%s max relative error: %e' % (param_name, rel_error(param_grad_num, grads[param_name])))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "## Overfit small data\n",
    "A nice trick is to train your model with just a few training samples. You should be able to overfit small datasets, which will result in very high training accuracy and comparatively low validation accuracy."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(Iteration 1 / 30) loss: 2.414060\n",
      "(Epoch 0 / 15) train acc: 0.190000; val_acc: 0.128000\n",
      "(Iteration 2 / 30) loss: 2.609504\n",
      "(Epoch 1 / 15) train acc: 0.230000; val_acc: 0.094000\n",
      "(Iteration 3 / 30) loss: 2.113380\n",
      "(Iteration 4 / 30) loss: 1.971811\n",
      "(Epoch 2 / 15) train acc: 0.310000; val_acc: 0.098000\n",
      "(Iteration 5 / 30) loss: 1.676728\n",
      "(Iteration 6 / 30) loss: 1.801782\n",
      "(Epoch 3 / 15) train acc: 0.570000; val_acc: 0.191000\n",
      "(Iteration 7 / 30) loss: 1.652683\n",
      "(Iteration 8 / 30) loss: 1.598651\n",
      "(Epoch 4 / 15) train acc: 0.570000; val_acc: 0.194000\n",
      "(Iteration 9 / 30) loss: 1.070849\n",
      "(Iteration 10 / 30) loss: 1.408982\n",
      "(Epoch 5 / 15) train acc: 0.740000; val_acc: 0.188000\n",
      "(Iteration 11 / 30) loss: 0.816042\n",
      "(Iteration 12 / 30) loss: 0.807953\n",
      "(Epoch 6 / 15) train acc: 0.820000; val_acc: 0.256000\n",
      "(Iteration 13 / 30) loss: 0.971160\n",
      "(Iteration 14 / 30) loss: 0.568949\n",
      "(Epoch 7 / 15) train acc: 0.860000; val_acc: 0.236000\n",
      "(Iteration 15 / 30) loss: 0.394380\n",
      "(Iteration 16 / 30) loss: 0.401405\n",
      "(Epoch 8 / 15) train acc: 0.910000; val_acc: 0.194000\n",
      "(Iteration 17 / 30) loss: 0.723469\n",
      "(Iteration 18 / 30) loss: 0.258560\n",
      "(Epoch 9 / 15) train acc: 0.910000; val_acc: 0.169000\n",
      "(Iteration 19 / 30) loss: 0.242372\n",
      "(Iteration 20 / 30) loss: 0.235556\n",
      "(Epoch 10 / 15) train acc: 0.940000; val_acc: 0.199000\n",
      "(Iteration 21 / 30) loss: 0.212628\n",
      "(Iteration 22 / 30) loss: 0.126721\n",
      "(Epoch 11 / 15) train acc: 0.940000; val_acc: 0.213000\n",
      "(Iteration 23 / 30) loss: 0.113127\n",
      "(Iteration 24 / 30) loss: 0.270010\n",
      "(Epoch 12 / 15) train acc: 0.970000; val_acc: 0.204000\n",
      "(Iteration 25 / 30) loss: 0.067624\n",
      "(Iteration 26 / 30) loss: 0.081088\n",
      "(Epoch 13 / 15) train acc: 1.000000; val_acc: 0.207000\n",
      "(Iteration 27 / 30) loss: 0.029606\n",
      "(Iteration 28 / 30) loss: 0.051089\n",
      "(Epoch 14 / 15) train acc: 1.000000; val_acc: 0.209000\n",
      "(Iteration 29 / 30) loss: 0.027549\n",
      "(Iteration 30 / 30) loss: 0.025578\n",
      "(Epoch 15 / 15) train acc: 1.000000; val_acc: 0.209000\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(231)\n",
    "\n",
    "num_train = 100\n",
    "small_data = {\n",
    "  'X_train': data['X_train'][:num_train],\n",
    "  'y_train': data['y_train'][:num_train],\n",
    "  'X_val': data['X_val'],\n",
    "  'y_val': data['y_val'],\n",
    "}\n",
    "\n",
    "model = ThreeLayerConvNet(weight_scale=1e-2)\n",
    "\n",
    "solver = Solver(model, small_data,\n",
    "                num_epochs=15, batch_size=50,\n",
    "                update_rule='adam',\n",
    "                optim_config={\n",
    "                  'learning_rate': 1e-3,\n",
    "                },\n",
    "                verbose=True, print_every=1)\n",
    "solver.train()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Plotting the loss, training accuracy, and validation accuracy should show clear overfitting:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.subplot(2, 1, 1)\n",
    "plt.plot(solver.loss_history, 'o')\n",
    "plt.xlabel('iteration')\n",
    "plt.ylabel('loss')\n",
    "\n",
    "plt.subplot(2, 1, 2)\n",
    "plt.plot(solver.train_acc_history, '-o')\n",
    "plt.plot(solver.val_acc_history, '-o')\n",
    "plt.legend(['train', 'val'], loc='upper left')\n",
    "plt.xlabel('epoch')\n",
    "plt.ylabel('accuracy')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "## Train the net\n",
    "By training the three-layer convolutional network for one epoch, you should achieve greater than 40% accuracy on the training set:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true,
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(Iteration 1 / 980) loss: 2.304770\n",
      "(Epoch 0 / 1) train acc: 0.094000; val_acc: 0.098000\n",
      "(Iteration 21 / 980) loss: 3.221848\n",
      "(Iteration 41 / 980) loss: 2.211949\n",
      "(Iteration 61 / 980) loss: 2.069265\n",
      "(Iteration 81 / 980) loss: 2.064579\n",
      "(Iteration 101 / 980) loss: 2.183118\n",
      "(Iteration 121 / 980) loss: 1.890175\n",
      "(Iteration 141 / 980) loss: 1.902105\n",
      "(Iteration 161 / 980) loss: 1.864460\n",
      "(Iteration 181 / 980) loss: 1.490760\n",
      "(Iteration 201 / 980) loss: 1.892004\n",
      "(Iteration 221 / 980) loss: 1.858416\n",
      "(Iteration 241 / 980) loss: 1.612264\n",
      "(Iteration 261 / 980) loss: 1.566750\n",
      "(Iteration 281 / 980) loss: 1.568174\n",
      "(Iteration 301 / 980) loss: 1.564170\n",
      "(Iteration 321 / 980) loss: 1.823973\n",
      "(Iteration 341 / 980) loss: 1.632665\n",
      "(Iteration 361 / 980) loss: 1.702549\n",
      "(Iteration 381 / 980) loss: 1.438723\n",
      "(Iteration 401 / 980) loss: 1.610273\n",
      "(Iteration 421 / 980) loss: 1.462568\n",
      "(Iteration 441 / 980) loss: 1.408174\n",
      "(Iteration 461 / 980) loss: 1.592074\n",
      "(Iteration 481 / 980) loss: 1.503810\n",
      "(Iteration 501 / 980) loss: 1.108236\n",
      "(Iteration 521 / 980) loss: 1.666773\n",
      "(Iteration 541 / 980) loss: 1.791331\n",
      "(Iteration 561 / 980) loss: 1.374010\n",
      "(Iteration 581 / 980) loss: 1.586207\n",
      "(Iteration 601 / 980) loss: 1.315198\n",
      "(Iteration 621 / 980) loss: 1.583150\n",
      "(Iteration 641 / 980) loss: 1.639644\n",
      "(Iteration 661 / 980) loss: 1.424589\n",
      "(Iteration 681 / 980) loss: 1.443497\n",
      "(Iteration 701 / 980) loss: 1.445947\n",
      "(Iteration 721 / 980) loss: 1.094543\n",
      "(Iteration 741 / 980) loss: 1.666519\n",
      "(Iteration 761 / 980) loss: 1.462271\n",
      "(Iteration 781 / 980) loss: 1.503576\n",
      "(Iteration 801 / 980) loss: 1.377261\n",
      "(Iteration 821 / 980) loss: 1.078346\n",
      "(Iteration 841 / 980) loss: 1.551998\n",
      "(Iteration 861 / 980) loss: 1.463882\n",
      "(Iteration 881 / 980) loss: 1.344707\n",
      "(Iteration 901 / 980) loss: 1.330137\n",
      "(Iteration 921 / 980) loss: 1.327814\n",
      "(Iteration 941 / 980) loss: 1.432724\n",
      "(Iteration 961 / 980) loss: 1.781925\n",
      "(Epoch 1 / 1) train acc: 0.532000; val_acc: 0.532000\n"
     ]
    }
   ],
   "source": [
    "model = ThreeLayerConvNet(weight_scale=0.001, hidden_dim=500, reg=0.001)\n",
    "\n",
    "solver = Solver(model, data,\n",
    "                num_epochs=1, batch_size=50,\n",
    "                update_rule='adam',\n",
    "                optim_config={\n",
    "                  'learning_rate': 1e-3,\n",
    "                },\n",
    "                verbose=True, print_every=20)\n",
    "solver.train()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "## Visualize Filters\n",
    "You can visualize the first-layer convolutional filters from the trained network by running the following:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from cs231n.vis_utils import visualize_grid\n",
    "\n",
    "grid = visualize_grid(model.params['W1'].transpose(0, 2, 3, 1))\n",
    "plt.imshow(grid.astype('uint8'))\n",
    "plt.axis('off')\n",
    "plt.gcf().set_size_inches(5, 5)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Spatial Batch Normalization\n",
    "We already saw that batch normalization is a very useful technique for training deep fully-connected networks. Batch normalization can also be used for convolutional networks, but we need to tweak it a bit; the modification will be called \"spatial batch normalization.\"\n",
    "\n",
    "Normally batch-normalization accepts inputs of shape `(N, D)` and produces outputs of shape `(N, D)`, where we normalize across the minibatch dimension `N`. For data coming from convolutional layers, batch normalization needs to accept inputs of shape `(N, C, H, W)` and produce outputs of shape `(N, C, H, W)` where the `N` dimension gives the minibatch size and the `(H, W)` dimensions give the spatial size of the feature map.\n",
    "\n",
    "If the feature map was produced using convolutions, then we expect the statistics of each feature channel to be relatively consistent both between different imagesand different locations within the same image. Therefore spatial batch normalization computes a mean and variance for each of the `C` feature channels by computing statistics over both the minibatch dimension `N` and the spatial dimensions `H` and `W`."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "## Spatial batch normalization: forward\n",
    "\n",
    "In the file `cs231n/layers.py`, implement the forward pass for spatial batch normalization in the function `spatial_batchnorm_forward`. Check your implementation by running the following:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Before spatial batch normalization:\n",
      "  Shape:  (2, 3, 4, 5)\n",
      "  Means:  [9.33463814 8.90909116 9.11056338]\n",
      "  Stds:  [3.61447857 3.19347686 3.5168142 ]\n",
      "After spatial batch normalization:\n",
      "  Shape:  (2, 3, 4, 5)\n",
      "  Means:  [ 1.38777878e-16  1.94289029e-17 -9.43689571e-17]\n",
      "  Stds:  [0.99999962 0.99999951 0.9999996 ]\n",
      "After spatial batch normalization (nontrivial gamma, beta):\n",
      "  Shape:  (2, 3, 4, 5)\n",
      "  Means:  [6. 7. 8.]\n",
      "  Stds:  [2.99999885 3.99999804 4.99999798]\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(231)\n",
    "# Check the training-time forward pass by checking means and variances\n",
    "# of features both before and after spatial batch normalization\n",
    "\n",
    "N, C, H, W = 2, 3, 4, 5\n",
    "x = 4 * np.random.randn(N, C, H, W) + 10\n",
    "\n",
    "print('Before spatial batch normalization:')\n",
    "print('  Shape: ', x.shape)\n",
    "print('  Means: ', x.mean(axis=(0, 2, 3)))\n",
    "print('  Stds: ', x.std(axis=(0, 2, 3)))\n",
    "\n",
    "# Means should be close to zero and stds close to one\n",
    "gamma, beta = np.ones(C), np.zeros(C)\n",
    "bn_param = {'mode': 'train'}\n",
    "out, _ = spatial_batchnorm_forward(x, gamma, beta, bn_param)\n",
    "print('After spatial batch normalization:')\n",
    "print('  Shape: ', out.shape)\n",
    "print('  Means: ', out.mean(axis=(0, 2, 3)))\n",
    "print('  Stds: ', out.std(axis=(0, 2, 3)))\n",
    "\n",
    "# Means should be close to beta and stds close to gamma\n",
    "gamma, beta = np.asarray([3, 4, 5]), np.asarray([6, 7, 8])\n",
    "out, _ = spatial_batchnorm_forward(x, gamma, beta, bn_param)\n",
    "print('After spatial batch normalization (nontrivial gamma, beta):')\n",
    "print('  Shape: ', out.shape)\n",
    "print('  Means: ', out.mean(axis=(0, 2, 3)))\n",
    "print('  Stds: ', out.std(axis=(0, 2, 3)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "After spatial batch normalization (test-time):\n",
      "  means:  [-0.08034406  0.07562881  0.05716371  0.04378383]\n",
      "  stds:  [0.96718744 1.0299714  1.02887624 1.00585577]\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(231)\n",
    "# Check the test-time forward pass by running the training-time\n",
    "# forward pass many times to warm up the running averages, and then\n",
    "# checking the means and variances of activations after a test-time\n",
    "# forward pass.\n",
    "N, C, H, W = 10, 4, 11, 12\n",
    "\n",
    "bn_param = {'mode': 'train'}\n",
    "gamma = np.ones(C)\n",
    "beta = np.zeros(C)\n",
    "for t in range(50):\n",
    "  x = 2.3 * np.random.randn(N, C, H, W) + 13\n",
    "  spatial_batchnorm_forward(x, gamma, beta, bn_param)\n",
    "bn_param['mode'] = 'test'\n",
    "x = 2.3 * np.random.randn(N, C, H, W) + 13\n",
    "a_norm, _ = spatial_batchnorm_forward(x, gamma, beta, bn_param)\n",
    "\n",
    "# Means should be close to zero and stds close to one, but will be\n",
    "# noisier than training-time forward passes.\n",
    "print('After spatial batch normalization (test-time):')\n",
    "print('  means: ', a_norm.mean(axis=(0, 2, 3)))\n",
    "print('  stds: ', a_norm.std(axis=(0, 2, 3)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "## Spatial batch normalization: backward\n",
    "In the file `cs231n/layers.py`, implement the backward pass for spatial batch normalization in the function `spatial_batchnorm_backward`. Run the following to check your implementation using a numeric gradient check:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "dx error:  3.423838616073709e-07\n",
      "dgamma error:  7.0963199356067174e-12\n",
      "dbeta error:  3.275380797385891e-12\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(231)\n",
    "N, C, H, W = 2, 3, 4, 5\n",
    "x = 5 * np.random.randn(N, C, H, W) + 12\n",
    "gamma = np.random.randn(C)\n",
    "beta = np.random.randn(C)\n",
    "dout = np.random.randn(N, C, H, W)\n",
    "\n",
    "bn_param = {'mode': 'train'}\n",
    "fx = lambda x: spatial_batchnorm_forward(x, gamma, beta, bn_param)[0]\n",
    "fg = lambda a: spatial_batchnorm_forward(x, gamma, beta, bn_param)[0]\n",
    "fb = lambda b: spatial_batchnorm_forward(x, gamma, beta, bn_param)[0]\n",
    "\n",
    "dx_num = eval_numerical_gradient_array(fx, x, dout)\n",
    "da_num = eval_numerical_gradient_array(fg, gamma, dout)\n",
    "db_num = eval_numerical_gradient_array(fb, beta, dout)\n",
    "\n",
    "_, cache = spatial_batchnorm_forward(x, gamma, beta, bn_param)\n",
    "dx, dgamma, dbeta = spatial_batchnorm_backward(dout, cache)\n",
    "print('dx error: ', rel_error(dx_num, dx))\n",
    "print('dgamma error: ', rel_error(da_num, dgamma))\n",
    "print('dbeta error: ', rel_error(db_num, dbeta))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Extra Credit Description\n",
    "If you implement any additional features for extra credit, clearly describe them here with pointers to any code in this or other files if applicable."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
